2
 HashSet<int[]>  a = new HashSet<int[]>();
 int[] somestuff = {1, 2, 3};
 a.add(somestuff);
 int[] somestuff2 = {1, 2, 3};
 System.out.println(a.contains(somestuff2));

ですfalse

正しく確認するにはどうすればよいですか?確認した場合にのみsomestufftrueになりますが、変数名/リテラル​​が同じでなくても、値が同じである場合でも、を取得したいと思いますtrue。どのメソッド呼び出しでこれを実行できますか?値を確認したい...

おそらくそれは、セット内でハッシュされているコンテンツと、それを設定するために最初に使用された変数リテラルに依存していることと関係があります

4

2 に答える 2

1

しかし、あなたがやりたいことをするための直接的な簡単な方法はありません...

int[]フィールドで構成され、実装され、配列の内容に基づいてequals()一貫性のあるクラスを作成します。hashCode()

そのSetようなオブジェクトが使用できる場合:

Set<MyClass> s;
MyClass o;
boolean b = s.contains(o);
于 2012-12-06T03:45:06.197 に答える
0

a.contains()メソッドを呼び出してこれを行うことはできません。2つの配列が同一であるため、ハッシュテーブルを繰り返し、値を確認する必要があります。

于 2012-12-06T03:45:40.997 に答える