gst*_*low 16 java collections word-wrap
我知道如果我有元素,我想得到List/ Set/ Map这个元素我可以调用:
Collections.singleton()/ Collections.singletonList()/Collections.singletonMap()
在这种情况下,我得到不可变的集合(我不能添加/删除元素到集合).
是否有模拟获得可变集合?
这样的API退出是没有意义的,因为你总是可以使用带有集合的构造函数(new ArrayList(Collections.singleton(whatever)))
如果它存在则会有害.没有合适的API将允许您选择新集合的实现(例如,LinkedListvs . ArrayList)或其他参数(如初始大小).
Singleton集合只是非常精简的适配器,用于将单个对象传递给期望集合的API.让它们变得可变会完全违背这一点.
使用标准库,您可以使用:
new ArrayList<...>(Arrays.asList(...)))
new HashSet<...>(Arrays.asList(...)))
Run Code Online (Sandbox Code Playgroud)
这些可以将任意数量的元素作为参数.像番石榴这样的库有一些方便的方法:
Sets.newHashSet(...)
Lists.newArrayList(...)
Maps.newHashMap(ImmutableMap.of(...))
Run Code Online (Sandbox Code Playgroud)