Как удалить значение из коллекции, если в ней есть дубликат - PullRequest
0 голосов
/ 27 декабря 2011

Здравствуйте, у меня есть коллекция, и я хочу удалить значение из моей коллекции, если оно имеет дубликат.Если у моего значения есть дубликат, я хочу удалить свое значение и дубликат

Вот объявление моей коллекции:

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

Я завершил свою коллекцию с помощью запросов SQL

Ответы [ 3 ]

2 голосов
/ 27 декабря 2011

Set работает как Математическая Коллекция, поэтому она не допускает дублирования по своей природе.

На практике каждый раз, когда вы .add() и Предмет к нему, он проверяет (через .equals() и .hashCode()), находится ли этот Предмет в вашем Set. Это игнорирует, если это так.

0 голосов
/ 27 декабря 2011

Если у моего значения есть дубликат, я хочу удалить свое значение и дубликат

Вот как это сделать:

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.

Конечно, по порядкучтобы это работало, ваш 'элемент' должен иметь семантику значения, а не семантику объекта.На практике это означает, что он должен иметь метод Equals (), а также метод GetHashCode (), который учитывает содержимое объекта, а не ссылку на объект.

0 голосов
/ 27 декабря 2011

Может быть, вам стоит подумать об использовании Set, если вам не нужны дубликаты.

...