Java
- 2 ответа
- 0 вопросов
2
Вклад в тег
ArrayList add: 13265642
LinkedList add: 9550057
ArrayList get: 1543352
LinkedList get: 85085551
ArrayList remove: 199961301
LinkedList remove: 85768810
public class ObservableValue {
public interface Observer {
void onValueChanged(Object newValue);
}
private Object value;
private final List<Observer> observers = new LinkedList<Observer>();
public Object getValue() {
return value;
}
public void setValue(Object newValue) {
this.value = newValue;
notifyOnValueChanged(newValue); // уведомляем слушателей
}
// дешевая вставка объекта
public void addObserver(Observer observer) {
observers.add(observer);
}
// дешевое удаление с любого места в списке
public boolean removeObserver(Observer observer) {
return observers.remove(observer);
}
// дешевое чтение т.к. не по индексу, а последовательно
private void notifyOnValueChanged(Object newValue) {
for (Observer observer : observers) {
if (observer != null) observer.onValueChanged(newValue);
}
}
}