我知道如果我有元素,我想只使用eith元素获取List / Set / Map,我应该调用:
Collections.singleton()
/ Collections.singletonList()
/ Collections.singletonMap()
我不明白为什么所有这些方法都在其名称中包含singleton
?
我有一个假设,也许它会为同一个对象返回相同的Collection,但是这个测试显示它是假的
Object o = new Object();
System.out.println(Collections.singleton(o) == Collections.singleton(o));
输出:false
对我来说,单例模式禁止创建多个具体类型的元素,并为访问此对象提供了统一网关。
请澄清。
答案 0 :(得分:6)
这是“单身人士”这个词的不同含义 - 它不是“单身人士模式”,而是“从单一项目创建一个集合”,这就是全部。
例如,来自define:singleton
:
正在考虑的那种人或事物。
这样想:“单身”是“一件事”,因为“对”是“两件事”。因此以同样的方式拥有Collections.pair(T t1, T t2)
并不完全不自然。
答案 1 :(得分:2)
这些方法背后的想法是,集合中的元素是一个单数元素,并且始终是 - 您无法将其从集合中删除,也无法向此集合添加其他项目。