0

arraylist と Hashmap が与えられます。

そして、このコレクションにランダムな整数を追加したい.追加中に、値がすでに入力されているかどうかを確認する必要があります.はいの場合は、trueを返し、コレクションに追加しないでください。または、値を追加する必要があります.したがって、どのコレクションがこの中でおすすめ?? 説明。

さて、ハッシュマップに整数のみを追加する方法や、ハッシュマップに追加する場合のキーと値のペアは何なのかはあいまいですが、それはインタビューで尋ねられた質問であり、1つの答えを与える必要があります

4

6 に答える 6

1

セットを使用すると、一意のエントリが処理されます。

Set<Integer> set = new HashSet<Integer>();
//...
int randomNumber = ...
boolean unique = set.add(randomNumber);
if (unique) {
    System.out.println(randomNumber + " was added to set");
} else {
    System.out.println(randomNumber + " already was in set");
}
于 2012-11-16T19:18:17.587 に答える
0

何かのようなものIntHashSet

..................。

http://lucene.apache.org/core/old_versioned_docs/versions/3_5_0/api/all/org/apache/lucene/util/collections/IntHashSet.html

于 2012-11-16T19:15:36.540 に答える
0

インタビューでこの質問が与えられた場合、これはトリックの質問だと思います...追加されるアイテムの順序が重要な場合はLinkedHashSetを使用し、そうでない場合はHashSetを使用します...

于 2012-11-16T19:21:58.210 に答える
0

単純に ArrayList を使用して値を追加できます。また、追加する前に値を監視することもできます。例:

List list = new ArrayList();

if (list.contains(whatever)) {
 System.out.println("do something"); 
} else {
   }

ハッシュマップを使用して同じことを行うこともできますが、入力するキーの問題に応じて要件によって異なります

于 2012-11-16T19:08:12.863 に答える
0

を簡単に使用できますCollection#contains(...)

于 2012-11-16T19:08:31.433 に答える
0

この特定の問題については、HashMap を使用することをお勧めします。これは、何もしなくても重複値をネイティブにチェックするためです。

ArrayList を使用した場合は、整数が以前に追加されているかどうかを「indexOf」で確認する必要があります。これには、配列全体を検索する必要があります。

また、ハッシュマップはキーでソートされるため、検索が効率的になります。

于 2012-11-16T19:08:33.970 に答える