summaryrefslogtreecommitdiffstats
path: root/src/de/animux/android/andmal/util/SortedLinkedList.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/de/animux/android/andmal/util/SortedLinkedList.java')
-rw-r--r--src/de/animux/android/andmal/util/SortedLinkedList.java40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/de/animux/android/andmal/util/SortedLinkedList.java b/src/de/animux/android/andmal/util/SortedLinkedList.java
new file mode 100644
index 0000000..974d3e5
--- /dev/null
+++ b/src/de/animux/android/andmal/util/SortedLinkedList.java
@@ -0,0 +1,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;
+ }
+}