Ranides Atterwim před 10 roky
rodič
revize
8d16053258

+ 219 - 220
assira1/src/main/java/net/ranides/assira/collection/list/JoinList.java

@@ -1,220 +1,219 @@
-/*
- * @author Ranides Atterwim <ranides@gmail.com>
- * @copyright Ranides Atterwim
- * @license WTFPL
- * @url http://ranides.net/projects/assira
- */
-package net.ranides.assira.collection.list;
-
-import java.util.*;
-
-/**
- * Klasa reprezentująca złączenie wielu list jako jedną kolekcję.
- * @param <T>
- * @author ranides
- * @todo (migration) assira
- */
-public class JoinList<T> extends AbstractSequentialList<T> {
-
-    private final List<List<T>> content;
-
-    /**
-     * Tworzy nowe złączenie, do którego można doklejać nowe listy za pomocą
-     * metody {@link #join(List) join(List)}
-     */
-    public JoinList() {
-        content = new LinkedList<>();
-    }
-    
-    public JoinList(List<T> values[]) {
-        content = Arrays.asList(values);
-    }
-
-    /**
-     * Tworzy nowe złączenie na podstawie podanej listy list.
-     * @param values
-     */
-    public JoinList(List<List<T>> values) {
-        content = values;
-    }
-
-    @Override
-    public int size() {
-        int size = 0;
-        for(List<T> list : content) {
-            size += list.size();
-        }
-        return size;
-    }
-
-    @Override
-    public boolean contains(Object value) {
-        for(List<T> list : content) {
-            if( list.contains(value) ) { return true; }
-        }
-        return false;
-    }
-
-    @Override
-    public T get(int index) {
-        int begin, end = 0;
-
-        for(List<T> list : content) {
-            begin = end;
-            end += list.size();
-            if(index < end) {
-                return list.get(index - begin);
-            }
-        }
-        throw new IndexOutOfBoundsException("Index: " + index + " Size: " + end );
-    }
-
-    @Override
-    public Iterator<T> iterator() {
-        return new JoinIterator();
-    }
-
-    @Override
-    public ListIterator<T> listIterator() {
-        return new JoinIterator();
-    }
-
-    @Override
-    public ListIterator<T> listIterator(int index) {
-        return new JoinIterator(index);
-    }
-
-    /**
-     * Dodaje do kolekcji kolejną listę. Uwaga: dodawana jest <b>lista</b>, a nie
-     * jej elementy.
-     * @param list
-     * @return this
-     */
-    public JoinList<T> join(List<T> list) {
-        content.add(list);
-        return this;
-    }
-
-    private final class JoinIterator implements ListIterator<T> {
-
-        private int segment = 0;
-        private ListIterator<T> iterator;
-
-        private int index = 0;
-        private boolean hasNext = false;
-        private boolean hasPrev = false;
-        private T next;
-        private T prev;
-
-        public JoinIterator(int index) {
-            this();
-            while(index > 0) { next(); }
-        }
-
-        public JoinIterator() {
-            segment = 0;
-            iterator = content.get(segment).listIterator();
-        }
-
-        @Override
-        public boolean hasNext() {
-            if( hasNext ) {
-                return true;
-            }
-
-            if( iterator!=null && iterator.hasNext() ) {
-                next = iterator.next();
-                hasNext = true;
-                hasPrev = false;
-                return true;
-            }
-
-            while( segment+1 < content.size() ) {
-                hasPrev = false;
-                iterator = content.get( ++segment ).listIterator();
-                if(iterator.hasNext()) {
-                    next = iterator.next();
-                    hasNext = true;
-                    return true;
-                }
-            }
-
-            hasNext = false;
-            return false;
-        }
-
-        @Override
-        public T next() {
-            if( hasNext() ) {
-                hasNext = false;
-                index++;
-                return next;
-            }
-            throw new NoSuchElementException();
-        }
-
-        @Override
-        public boolean hasPrevious() {
-            if( hasPrev ) {
-                return true;
-            }
-
-            if( iterator!=null && iterator.hasPrevious() ) {
-                prev = iterator.previous();
-                hasPrev = true;
-                hasNext = false;
-                return true;
-            }
-
-            while( segment > 0 ) {
-                hasNext = false;
-                List<T> list = content.get(--segment);
-                iterator = list.listIterator(list.size());
-                if(iterator.hasPrevious()) {
-                    prev = iterator.previous();
-                    hasPrev = true;
-                    return true;
-                }
-            }
-
-            hasPrev = false;
-            return false;
-        }
-
-        @Override
-        public T previous() {
-            if( hasPrevious() ) {
-                hasPrev = false;
-                index--;
-                return prev;
-            }
-            throw new NoSuchElementException();
-        }
-
-        @Override
-        public int nextIndex() {
-            return index;
-        }
-
-        @Override
-        public int previousIndex() {
-            return index-1;
-        }
-
-        @Override
-        public void remove() {
-            throw new UnsupportedOperationException("Immutable list.");
-        }
-
-        @Override
-        public void set(T value) {
-            throw new UnsupportedOperationException("Immutable list.");
-        }
-
-        @Override
-        public void add(T value) {
-            throw new UnsupportedOperationException("Immutable list.");
-        }
-
-    }
-}
+/*
+ * @author Ranides Atterwim <ranides@gmail.com>
+ * @copyright Ranides Atterwim
+ * @license WTFPL
+ * @url http://ranides.net/projects/assira
+ */
+package net.ranides.assira.collection.list;
+
+import java.util.*;
+
+/**
+ * Klasa reprezentująca złączenie wielu list jako jedną kolekcję.
+ * @param <T>
+ * @author ranides
+ */
+public class JoinList<T> extends AbstractSequentialList<T> {
+
+    private final List<List<T>> content;
+
+    /**
+     * Tworzy nowe złączenie, do którego można doklejać nowe listy za pomocą
+     * metody {@link #join(List) join(List)}
+     */
+    public JoinList() {
+        content = new LinkedList<>();
+    }
+    
+    public JoinList(List<T> values[]) {
+        content = Arrays.asList(values);
+    }
+
+    /**
+     * Tworzy nowe złączenie na podstawie podanej listy list.
+     * @param values
+     */
+    public JoinList(List<List<T>> values) {
+        content = values;
+    }
+
+    @Override
+    public int size() {
+        int size = 0;
+        for(List<T> list : content) {
+            size += list.size();
+        }
+        return size;
+    }
+
+    @Override
+    public boolean contains(Object value) {
+        for(List<T> list : content) {
+            if( list.contains(value) ) { return true; }
+        }
+        return false;
+    }
+
+    @Override
+    public T get(int index) {
+        int begin, end = 0;
+
+        for(List<T> list : content) {
+            begin = end;
+            end += list.size();
+            if(index < end) {
+                return list.get(index - begin);
+            }
+        }
+        throw new IndexOutOfBoundsException("Index: " + index + " Size: " + end );
+    }
+
+    @Override
+    public Iterator<T> iterator() {
+        return new JoinIterator();
+    }
+
+    @Override
+    public ListIterator<T> listIterator() {
+        return new JoinIterator();
+    }
+
+    @Override
+    public ListIterator<T> listIterator(int index) {
+        return new JoinIterator(index);
+    }
+
+    /**
+     * Dodaje do kolekcji kolejną listę. Uwaga: dodawana jest <b>lista</b>, a nie
+     * jej elementy.
+     * @param list
+     * @return this
+     */
+    public JoinList<T> join(List<T> list) {
+        content.add(list);
+        return this;
+    }
+
+    private final class JoinIterator implements ListIterator<T> {
+
+        private int segment = 0;
+        private ListIterator<T> iterator;
+
+        private int index = 0;
+        private boolean hasNext = false;
+        private boolean hasPrev = false;
+        private T next;
+        private T prev;
+
+        public JoinIterator(int index) {
+            this();
+            while(index > 0) { next(); }
+        }
+
+        public JoinIterator() {
+            segment = 0;
+            iterator = content.get(segment).listIterator();
+        }
+
+        @Override
+        public boolean hasNext() {
+            if( hasNext ) {
+                return true;
+            }
+
+            if( iterator!=null && iterator.hasNext() ) {
+                next = iterator.next();
+                hasNext = true;
+                hasPrev = false;
+                return true;
+            }
+
+            while( segment+1 < content.size() ) {
+                hasPrev = false;
+                iterator = content.get( ++segment ).listIterator();
+                if(iterator.hasNext()) {
+                    next = iterator.next();
+                    hasNext = true;
+                    return true;
+                }
+            }
+
+            hasNext = false;
+            return false;
+        }
+
+        @Override
+        public T next() {
+            if( hasNext() ) {
+                hasNext = false;
+                index++;
+                return next;
+            }
+            throw new NoSuchElementException();
+        }
+
+        @Override
+        public boolean hasPrevious() {
+            if( hasPrev ) {
+                return true;
+            }
+
+            if( iterator!=null && iterator.hasPrevious() ) {
+                prev = iterator.previous();
+                hasPrev = true;
+                hasNext = false;
+                return true;
+            }
+
+            while( segment > 0 ) {
+                hasNext = false;
+                List<T> list = content.get(--segment);
+                iterator = list.listIterator(list.size());
+                if(iterator.hasPrevious()) {
+                    prev = iterator.previous();
+                    hasPrev = true;
+                    return true;
+                }
+            }
+
+            hasPrev = false;
+            return false;
+        }
+
+        @Override
+        public T previous() {
+            if( hasPrevious() ) {
+                hasPrev = false;
+                index--;
+                return prev;
+            }
+            throw new NoSuchElementException();
+        }
+
+        @Override
+        public int nextIndex() {
+            return index;
+        }
+
+        @Override
+        public int previousIndex() {
+            return index-1;
+        }
+
+        @Override
+        public void remove() {
+            throw new UnsupportedOperationException("Immutable list.");
+        }
+
+        @Override
+        public void set(T value) {
+            throw new UnsupportedOperationException("Immutable list.");
+        }
+
+        @Override
+        public void add(T value) {
+            throw new UnsupportedOperationException("Immutable list.");
+        }
+
+    }
+}