タイトルは、私が抱えている問題に光を当てています。これが私のコードです:
// fields required for traversal
private Queue<ArrayList<String>> q;
private ArrayList<ArrayList<String>> r;
Set<String> stringList = getMeStrings();
for(String s : stringList)
{
ArrayList<String> stringsRoute = new ArrayList<String>();
stringsRoute.add(getSomeString());
stringsRoute.add(s);
if(!r.contains(stringList))
{
if(!q.contains(stringList))
{
q.add(stringList);
}
r.add(stringList);
}
}
For ループ内の If ステートメントは常に失敗します。その理由は、新しい ArrayList オブジェクト (別の参照) を作成していて、If ステートメントが [ r ] 内の各 ArrayLists の内容をチェックしていないためだと思います。同じ要素を同じ順序で含む..など
2 つの ArrayList が類似しているかどうかを調べるために .equals を使用する必要があることはわかっていますが、他の多くの ArrayList を格納する ArrayList があります。
親 ArrayList に、作成中の新しい ArrayList と同等の ArrayList が含まれているかどうかを確認するにはどうすればよいですか?
私が何を達成しようとしているのかが明確になることを願っています。
ありがとう