 
      
    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);
            }
        }
    }