我需要创建一个将存储唯一对象元素的类。我不需要对这些元素进行排序,但它们必须是唯一的。
有人可以就我应该使用什么界面给我建议吗?一个人向我建议我可以使用 Set,然后另一个人说 Vector 或 List。现在我完全糊涂了:-(
我需要创建一个将存储唯一对象元素的类。我不需要对这些元素进行排序,但它们必须是唯一的。
有人可以就我应该使用什么界面给我建议吗?一个人向我建议我可以使用 Set,然后另一个人说 Vector 或 List。现在我完全糊涂了:-(
Set
正是您正在寻找的
Set<Integer> uniqueValues = new HashSet<Integer>();
uniqueValues.add(1);
uniqueValues.add(2);
uniqueValues.add(3);
uniqueValues.add(2);// will be ignored
来自Set的文档:
不包含重复元素的集合。更正式地说,集合不包含一对元素 e1 和 e2 使得 e1.equals(e2),并且最多包含一个空元素。正如它的名字所暗示的,这个接口模拟了数学集合抽象。
(我的重点)
请注意,这些对象不应该是可变的以影响它们的相等性。否则,您可以插入一个对象,然后将其更改equal()
为集合中的另一个对象。我不希望一个Set
对象追溯地强制执行唯一性。
好吧,你应该设置像HashSet这样的集合。请记住以下几点。
不要忘记在您的 Set 将包含其对象的类中实现equals方法。
此外,使用良好的算法实现hashcode方法,该方法同样将您的集合划分为桶。您可以通过考虑您在 equals 方法中考虑的对象的特定属性来做到这一点。
你必须使用Set
. 它旨在存储独特的对象。更正式地说,集合不包含一对元素e1
和e2
这样的e1.equals(e2)
,并且最多包含一个空元素。这就是为什么你必须记住equals
在类中实现方法,哪些对象将存储在一个集合中。
使用 set 接口存储唯一对象....