如果集合中有重复的值,如何从集合中删除它

时间:2011-12-27 11:18:06

标签: java collections duplicates

您好我有一个集合,我想从我的集合中删除一个值,如果它有重复。 如果我的值有重复,我想删除我的值和重复

以下是我的收藏声明:

Collection<item> result = new Vector<item>();

我通过SQL查询完成了我的收藏

3 个答案:

答案 0 :(得分:2)

Set作为数学集合,因此不允许重复本质。

在实践中,每当您.add()和项目对象时,它都会检查(通过.equals().hashCode())该项目是否已在您的Set中。它会忽略它。

答案 1 :(得分:0)

如果您不想要重复,也许应该考虑使用Set

答案 2 :(得分:0)

  

如果我的值有重复,我想删除我的值和重复的

以下是如何操作:

1. Create a dictionary in which the key is an item, and the value is an int.
2. Enumerate the items in your collection. For each item:
   2.1. If the item is already in the dictionary, get the value, increment it,
        and put it back in the dictionary. Otherwise, put the item in the 
        dictionary with a value of 1.
3. Enumerate the items in your dictionary. For each item:
   3.1  Get the corresponding value of the item from the dictionary, and if 
        it is greater than 1, remove all occurrences of that item from the 
        collection.

当然,为了使其工作,你的'item'必须具有值语义,而不是对象语义。在实践中,这意味着它必须具有Equals()方法以及GetHashCode()方法,该方法考虑对象的内容,而不是对象引用。