文字列のリストが完全に別の文字列に含まれているかどうかを確認するコードを書きました。他の文字列リストに完全に含まれている文字列のリストを確認する
public static void main(String[] args) {
LinkedList<String> l1 = new LinkedList<String>();
LinkedList<String> l2 = new LinkedList<String>();
l1.add("Cc");
l1.add("Dd");
l2.add("Cc");
l2.add("Dd");
l2.add("Ee");
LinkedList<LinkedList<String>> l = new LinkedList<LinkedList<String>>();
l.add(l1);
l.add(l2);
System.out.println("OUTPUT: " + filterSublist(l));
}
static List<LinkedList<String>> filterSublist(LinkedList<LinkedList<String>> l) {
List<LinkedList<String>> uniq = new LinkedList<LinkedList<String>>(l);
l.forEach(elem -> uniq.removeIf(x -> !x.equals(elem) && elem.contains(x)));
return uniq;
}
function filterSubListは、他のリストに完全に含まれるリストのないリストのリストを返さなければなりません。
- リスト1: "CC、DD"
- リスト2: "CC、Ddは、Eeと"
リスト1は、全体リスト2に含まれているので、我々が持っている例では これは間違っている
OUTPUT: [[Cc, Dd], [Cc, Dd, Ee]]
:関数は、私は両方を含むリストである出力を得たプログラムを実行するときにのみ、リスト2 が含まれています。しかしリストのリストを返す必要があります。 filterSubList関数に間違いがありますか?
2つの 'lists'の** equality **をチェックするために' equals() 'メソッドを使用しない理由はありますか? –
良い方法があるかどうかわかりません。何を指示してるんですか? –
さて、 'equals()'メソッドを使うと、比較された2つのリストが等しい場合に 'true'を返すことができます。例 'System.out.println(list1.equals(list2))'のように。しかし、内容の順序が重要であることに注意してください。注文について気にしない場合は、 'HashSet' @Walriderを使うことができます –