2011-07-05 6 views
0

別のリストに追加されたい、ArrayListにはオブジェクトが含まれています。integerののJava-Iは1つの発生後、私は、オブジェクトが、私はオブジェクトが含まれ、このArrayListのIDを持っている

0 
10 
10 
9 
8 
3 
11 
6 
10 
1 
7 
13 
7 
7 

1の後に発生したことを、私はその整数をしたいです別のリスト(訪問先の例)に追加され、検査プロセスが停止します。これを解決するには?タイプArrayList IDを別のJavaコレクションに変更する必要がありますか?

答えて

0
import java.util.HashSet; 

public class Test { 

    private static final HashSet<Integer> onetimevisit = new HashSet<Integer>(); 
    private static final HashSet<Integer> alreadyVisited = new HashSet<Integer>(); 

    public static void addVisitor(Integer visitorId){ 
     if(onetimevisit.contains(visitorId)) 
      alreadyVisited.add(visitorId); 
     else 
      onetimevisit.add(visitorId); 
    } 
} 
+0

ありがとうございます。素晴らしい答え;) – afni

1

私はあなたがすべてのユニークな値が別のコレクションにあることを求めていると思います。その場合は、次の操作を行います。

List<Integer> list = Arrays.asList(0, 10, 10, 9, 8, 3, 11, 6, 10, 1, 7, 13, 7, 7); 
    Set<Integer> set = new HashSet<Integer>(list); 
    System.out.println(set); // Outputs "[0, 1, 3, 6, 7, 8, 9, 10, 11, 13]" 

。これは動作します:

  1. セットが同じ値を追加するだけで、一意の値
  2. を含むことが保証されて再びコレクションを渡す何の効果
  3. を持っていませんコレクションのコンストラクタは、パラメータのすべての要素を新しいコレクションに追加します。
0

質問を正しく読んでいれば、一意の値を含むコレクションが必要ですか?そのような場合は、これらの整数をListの代わりにSetに格納しておく必要があります。セットには一意の値が含まれています。同じ要素を複数回追加することは効果がありません。コレクションでオーダーが重要な場合は、オーダーされたSetを使用できます。 LinkedHashSet

ArrayListをSetに変更できない場合(その形式でコードに渡されるため)、ArrayListからセットを作成できます。

Set<Integer> uniqueCollection = new HashSet<Integer>(myArrayList); 

...あなたのリストから一意の値を保持します。

関連する問題