EnumSet and EnumMap, special implementations of Set and Map for use with enums, and shown in the Enumerated Types chapter.
Collectipns 中的一些单元方法
你可以看到这个整个集合体系中有几个类是以 Abstract 开头的,这些用虚线框包裹的类表示抽象类。他们实现了对应接口的部分功能,比如当你想要实现一个 Set 接口的时候, 你不会想要实现 Set 接口并且实现里面的所有方法。一般来说,我们会通过继承 AbstractSet 类做一个最小实现。但是说实话现在集合类基本上能满足你的需求了,一般不需要自己做扩展。
publicclassFillingLists{ publicstaticvoidmain(String[] args){ List<StringAddress> list = new ArrayList<>( Collections.nCopies(4, new StringAddress("Hello"))); System.out.println(list); Collections.fill(list, new StringAddress("World!")); System.out.println(list); } }
publicclassCollectionData<T> extendsArrayList<T> { publicCollectionData(Generator<T> gen, int quantity){ for (int i = 0; i < quantity; i++) add(gen.next()); }
// A generic convenience method: publicstatic <T> CollectionData<T> list(Generator<T> gen, int quantity){ returnnew CollectionData<>(gen, quantity); } }
classGovernmentimplementsGenerator<String> { String[] foundation = ("strange women lying in ponds " + "distributing swords is no basis for a system of " + "government").split(" "); privateint index;
public String next(){ return foundation[index++]; } }
publicclassCollectionDataTest{ publicstaticvoidmain(String[] args){ Set<String> set = new LinkedHashSet<>( new CollectionData<>(new Government(), 15)); // Using the convenience method: set.addAll(CollectionData.list(new Government(), 15)); System.out.println(set); } }
// output: // [strange, women, lying, in, ponds, distributing, swords, is, no, basis, for, a, system, of, government]