summaryrefslogtreecommitdiffstats
path: root/src/de/animux/android/andmal/util/SortedLinkedList.java
blob: 974d3e5ba5a33e1bcd8c27b592fea9c70447614a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package de.animux.android.andmal.util;

import java.util.Collection;
import java.util.LinkedList;
import java.util.ListIterator;

public class SortedLinkedList<T extends Comparable<T>> extends LinkedList<T> {

	private static final long serialVersionUID = 8263372892230475461L;

	@Override
	public boolean add(T object) {
		ListIterator<T> it = listIterator();
		while (it.hasNext()) {
			if (object.compareTo(it.next()) > 0) {
				break;
			}
		}
			
		if (it.hasPrevious()) {
			it.previous();
			it.add(object);
		}
		else {
			// insert at first position
			listIterator().add(object);
		}
		
		return true;
	}

	@Override
	public boolean addAll(Collection<? extends T> collection) {
		for (T object : collection) {
			add(object);
		}
		
		return true;
	}	
}