1

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

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

4

5 回答 5

7

Set正是您正在寻找的

Set<Integer> uniqueValues = new HashSet<Integer>();
uniqueValues.add(1);
uniqueValues.add(2);
uniqueValues.add(3);
uniqueValues.add(2);// will be ignored 
于 2012-06-26T09:00:03.690 回答
2

来自Set的文档:

不包含重复元素的集合。更正式地说,集合不包含一对元素 e1 和 e2 使得 e1.equals(e2),并且最多包含一个空元素。正如它的名字所暗示的,这个接口模拟了数学集合抽象。

(我的重点)

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

于 2012-06-26T09:01:32.283 回答
1

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

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

  2. 此外,使用良好的算法实现hashcode方法,该方法同样将您的集合划分为桶。您可以通过考虑您在 equals 方法中考虑的对象的特定属性来做到这一点。

于 2012-06-26T09:02:37.410 回答
0

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

于 2012-06-26T09:00:10.337 回答
0

使用 set 接口存储唯一对象....

于 2012-06-26T09:01:54.733 回答