我知道如果我有元素并且我只想获取包含每个元素的 List/Set/Map 我应该调用:
Collections.singleton()
/Collections.singletonList()
/Collections.singletonMap()
我不明白为什么所有这些方法的名称中都包含 singleton
?
我假设它可能为同一个对象返回同一个集合,但这个测试表明它是错误的
Object o = new Object();
System.out.println(Collections.singleton(o) == Collections.singleton(o));
输出:错误
对我来说,单例模式禁止创建多个具体类型的元素,并为访问该对象提供了统一的网关。
请澄清。
最佳答案
这是“单例”一词的不同含义 - 它不是“单例模式”,而是“从单个项目创建集合”,仅此而已。
例如,来自define:singleton
:
a single person or thing of the kind under consideration.
这样想:“单例”是“一件事”,“成对”是“两件事”。因此,以相同的方式使用 Collections.pair(T t1, T t2)
并不是完全不自然的。
关于java - 为什么在 Set/List/Map 中包装元素的方法在名称中包含 'singleton'?(java.util.Collections),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25216742/