package org.exist.util; import java.util.Iterator; /** * OrderedLongLinkedList.java * * @author Wolfgang Meier */ public class OrderedLongLinkedList extends LongLinkedList { /** * Constructor for OrderedLongLinkedList. */ public OrderedLongLinkedList() { super(); } /** * @see org.exist.util.LongLinkedList#add(long) */ public void add(long l) { if (first == null) { first = createListItem(l); last = first; count = 1; } else { ListItem newItem = createListItem(l); ListItem prev = last; while (prev != null) { final int cmp = newItem.compareTo(prev); if(cmp == 0) return; if(cmp > 0) { newItem.prev = prev; newItem.next = prev.next; if(prev == last) last = newItem; else newItem.next.prev = newItem; prev.next = newItem; ++count; return; } prev = prev.prev; } // insert as first item first.prev = newItem; newItem.next = first; first = newItem; ++count; } } public static void main(String[] args) { OrderedLongLinkedList list = new OrderedLongLinkedList(); list.add(7); list.add(44); list.add(4); list.add(-43); list.add(60); list.add(-122); list.add(1); System.out.println("size: " + list.getSize()); for(Iterator i = list.iterator(); i.hasNext(); ) { final OrderedLongLinkedList.ListItem item = (OrderedLongLinkedList.ListItem)i.next(); System.out.println(item.l); } } }