我可以使用Java中的哪个接口来存储唯一对象?

时间:2012-06-26 08:59:07

标签: java

我需要创建一个存储唯一对象元素的类。我不需要对这些元素进行排序,但它们必须是唯一的。

有人可以就我应该使用的界面给出建议吗?一个人向我建议我可以使用Set,然后另一个人说Vector或List。现在我完全糊涂了:-(

5 个答案:

答案 0 :(得分:7)

Set正是您正在寻找的

Set<Integer> uniqueValues = new HashSet<Integer>();
uniqueValues.add(1);
uniqueValues.add(2);
uniqueValues.add(3);
uniqueValues.add(2);// will be ignored 

答案 1 :(得分:2)

来自Set的文档:

  

不包含重复元素的集合。更正式的,集合   不包含元素e1和e2对,使得e1.equals(e2)和at   大多数一个null元素。正如其名称所暗示的,这个界面模型   数学集抽象。

(我的重点)

请注意,这些对象不应该是可变的,因为它们会影响它们的相等性。否则,您可以插入一个对象,然后对其进行更改,使其成为equal()集合中的另一个对象。我不希望Set对象追溯地强制执行唯一性。

答案 2 :(得分:1)

您必须使用Set。它旨在存储独特的对象。更正式地说,集合不包含e1e2元素对,e1.equals(e2),最多只有一个null元素。这就是为什么你必须记住在类中实现哪些对象将存储在集合中的原因。

答案 3 :(得分:1)

好吧,你应该设置像 HashSet 这样的集合。请记住以下几点。

  1. 不要忘记在Set包含对象的类中实现 equals 方法。

  2. 此外,使用一个好的算法实现哈希码方法,同样将您的集合分配到存储桶中。你可以通过考虑你在equals方法中考虑的对象的特定属性来做到这一点。

答案 4 :(得分:0)

使用set interface存储唯一对象....