浏览代码

ListUtils#constCopy

Ranides Atterwim 13 年之前
父节点
当前提交
dfc34269be
共有 1 个文件被更改,包括 27 次插入0 次删除
  1. 27 0
      src/main/java/net/ranides/assira/collection/ListUtils.java

+ 27 - 0
src/main/java/net/ranides/assira/collection/ListUtils.java

@@ -301,5 +301,32 @@ public final class ListUtils {
         while(iterator.hasNext()) { list.add(iterator.next()); }
         return list;
     }
+    
+    public static <T> List<T> constCopy(Collection<? extends T> values) {
+        return new ConstList<T>(values);
+    }
+    
+    public static class ConstList<T> extends AbstractList<T> {
+
+        private final Object[] array;
+
+        public ConstList(Collection<? extends T> values) {
+            this.array = values.toArray();
+        }
+
+        @Override
+        @SuppressWarnings("unchecked")
+        public T get(int index) {
+            return (T)array[index];
+        }
+
+        @Override
+        public int size() {
+            return array.length;
+        }
+
+    }
+            
+            
 
 }