SortedList extends AbstractList<T> { @Override public boolean add(T e) { if (elements.isEmpty()) { elements.add(e); return true; } int index = Collections.binarySearch(elements, e); if (index < 0) { index = -index - 1; } elements.add(index, e); return true; } SortedList(int initialCapacity);  SortedList(Collection<? extends T> c);  SortedList(); @Override T get(int index); @Override int size(); @Override boolean add(T e); @Override T remove(int index); @Override @SuppressWarnings("unchecked") int indexOf(Object o);  }
@Test public void testAdd() { SortedList<Double> l = new SortedList<>(); l.add(2.0); l.add(1.0); l.add(2.0); assertEquals(3, l.size()); assertEquals(1.0, l.get(0), DELTA); assertEquals(2.0, l.get(1), DELTA); assertEquals(2.0, l.get(2), DELTA); }