为什么在Set / List / Map中包装元素的方法包含' singleton'在名字?(java.util.Collections)

时间:2014-08-09 08:36:47

标签: java collections singleton

我知道如果我有元素,我想只使用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

对我来说,单例模式禁止创建多个具体类型的元素,并为访问此对象提供了统一网关。

请澄清。

2 个答案:

答案 0 :(得分:6)

这是“单身人士”这个词的不同含义 - 它不是“单身人士模式”,而是“从单一项目创建一个集合”,这就是全部。

例如,来自define:singleton

  

正在考虑的那种人或事物。

这样想:“单身”是“一件事”,因为“对”是“两件事”。因此以同样的方式拥有Collections.pair(T t1, T t2)并不完全不自然。

答案 1 :(得分:2)

这些方法背后的想法是,集合中的元素是一个单数元素,并且始终是 - 您无法将其从集合中删除,也无法向此集合添加其他项目。