소스 검색

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;
+        }
+
+    }
+            
+            
 
 }