package edu.berkeley.nlp.util; import java.util.ArrayList; import java.util.Comparator; public class SortedList<E> extends ArrayList<E> { private Comparator<? super E> comp; public SortedList(Comparator<? super E> comp) { this.comp = comp; } @Override public boolean add(E o) { // if (super.contains(o)) return false; super.add(o); // Collections.sort(this, comp); for (int index = super.size() - 2; index >= 0; --index) { E e = get(index); int compare = comp.compare(o, e); if (compare >= 0) { set(index + 1, o); break; } else { set(index + 1, e); if (index == 0) set(index, o); } } return true; } @Override public void add(int index, E element) { throw new UnsupportedOperationException(); } }