small Observable optimization

This commit is contained in:
hneemann 2018-01-22 14:28:00 +01:00
parent 49ec8c712b
commit 87b45d77b8

View File

@ -1,7 +1,6 @@
package de.neemann.digital.core; package de.neemann.digital.core;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Iterator;
/** /**
* A simple observable * A simple observable
@ -25,7 +24,7 @@ public class Observable {
* @return observer the observer to add * @return observer the observer to add
*/ */
public Observer addObserver(Observer observer) { public Observer addObserver(Observer observer) {
if (observer != null) if (observer != null && !observers.contains(observer))
observers.add(observer); observers.add(observer);
return observer; return observer;
} }
@ -52,11 +51,7 @@ public class Observable {
* @param observerClass the class of observers to remove * @param observerClass the class of observers to remove
*/ */
public void removeObserver(Class<? extends Observer> observerClass) { public void removeObserver(Class<? extends Observer> observerClass) {
Iterator<Observer> it = observers.iterator(); observers.removeIf(observer -> observer.getClass() == observerClass);
while (it.hasNext()) {
if (it.next().getClass() == observerClass)
it.remove();
}
} }
/** /**