2011-12-27 7 views
0

こんにちは私はコレクションを持っていて、重複があるコレクションから値を削除したいと思います。私はSQL経由で私のコレクションを完成 コレクションに重複がある場合に値を削除する方法

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

は、たぶん、あなたが使用することを検討すべきである

+3

シンプルです。「Set 」を使用してください。重複して処理されます。 –

+0

それは重複の世話をしますが、私の価値と彼の重複を気にしますか? – Mercer

+2

他の質問に答えることを考えたことはありますか? 82質問、0回答... –

答えて

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()メソッドが必要であることを意味します。

0

を照会します。私の価値は、私は私の値を削除したい重複し、重複ここ

を持っている場合は は私のコレクションの宣言です重複したくない場合はSetとなります。

2

Setさんは数学的なコレクションとして機能しますので、その性質上重複は許されません。

実際には、.add()とアイテムには、そのアイテムがすでにSetにあるかどうかがチェックされます(.equals().hashCode())。それがあれば無視します。

+0

okですが、SQLクエリを使ってコレクションを完成させました – Mercer

+0

複雑なタイプ(「人物」など)のコレクションですか?そうであれば、 '.equals()'メソッドをクラスに書くことを検討することができます。 – everton

+1

リストのすべての要素をセットに追加できます。ところで、私はベクトルを使用しない、そのリストの最良の選択であることはほとんどありません。 –

関連する問題