私は、リストのリストを維持し、それに基づいていくつかの操作を行う必要があるシナリオを持っています。Javaのリストのリストの中にリストを挿入してチェックするには?
[{peter,se,red},{peter,da,red},{mark,se,red}]
私は最初の値を取得し、それが存在しない場合は、リストのリストにこのリストを挿入するリストを作成します。私は、次のようなもののリストを取得しようとしています。たとえば、{peter、se、red}が再び来たら、それは挿入されるべきではありません。
ArrayList<ArrayList<String>> listOfList = new ArrayList<ArrayList<String>>();
ArrayList<String> singleList = new ArrayList<String>();
void someFunction() {
singleList.add("val1");
singleList.add("val2");
singleList.add("val3");
if(listOfList.containsAll(singleList)) {
<<some operation>>
} else {
listOfList.add(singleList);
<<some operation>>
}
//clearing the list, so it can be freshly used
//upon successive invocation of the function
singleList.clear();
現在、同じリストを2回渡しても、システムはelse部分に固執します。誰かが私がどこに間違っているか教えてください。また、このタスクを実装する別のより良い方法がありますか?
if(listOfList.contains(singleList)) {
<<some operation>>
} else {
listOfList.add(singleList);
<<some operation>>
}
鍵はここにあなたが含まれています(使用されることがある)メソッドの代わりに、のcontainsAll()メソッド:
入れ子リストの代わりにクラスを使用する方がよいでしょう。実際、これはほとんどこれを実現する最悪の方法です。 – Kayaman
セットを使用して重複を削除します。 – shmosel
リンクハッシュセットはどうですか? http://docs.oracle.com/javase/8/docs/api/java/util/LinkedHashSet.html –