Как рекомендовано здесь , я использую следующий код, чтобы проверить, содержит ли List<List<String>>
какой-либо подсписок, соответствующий какому-либо элементу из List
.
for (List<String> text1List : text2ListOfLists) {
System.out.println("text1List = " + text1List.toString() + " text2ListOfLists = " + comparisonTextQuoteListOfLists.toString());
if (!Collections.disjoint(text1List, comparisonTextQuoteListOfLists))
{
System.out.println("MATCHES!!");
} else {
System.out.println("NO MATCH!!");
}
}
OUTPUT :
text1List = [key1 key2 key3 key4 key5, key2 key3 key4 key5 key6, key3 key4 key5 key6 key7] text2ListOfLists = [[key1 key2 key3 key4 key5, key2 key3 key4 key5 key6, key3 key4 key5 key6 key7], [key11 key12 key13 key14 key15, key12 key13 key14 key15 key16, key13 key14 key15 key16 key17]]
NO MATCH!!
text1List = [key11 key12 key13 key14 key15, key12 key13 key14 key15 key16, key13 key14 key15 key16 key17] text2ListOfLists = [[key1 key2 key3 key4 key5, key2 key3 key4 key5 key6, key3 key4 key5 key6 key7], [key11 key12 key13 key14 key15, key12 key13 key14 key15 key16, key13 key14 key15 key16 key17]]
NO MATCH!!
Однако, поскольку text2ListOfLists
содержит записи из text1List
, я ожидаю, что это напечатает MATCH !!
Как проверить если список списков содержит подсписок с элементом, соответствующим элементу из списка? *
Если text2ListOfLists
содержит строку: key1 key2 key3 key4 key5
ИЛИ key2 key3 key4 key5 key6
ИЛИ key3 key4 key5 key6 key7
(что и делает) должно возвращать true ..
Спасибо!
Обновление:
Ниже приведен обновленный код + вывод @ Код Эрана:
final ArrayList<String> textWords = new ArrayList<String>();
textWords.add("key1 key2 key3 key4 key5 key6 key7");
textWords.add("key11 key12 key13 key14 key15 key16 key17");
final ArrayList<String> textWords1 = new ArrayList<String>();
textWords1.add("key111 key112 key113 key114 key115 key116 key117");
textWords1.add("key110 key12 key13 key14 key15 key16 key17");
int desiredListSize = 5;
List<List<String>> text2ListOfLists = StringX.splitStrIntoWordChunks(textWords, desiredListSize);
List<List<String>> comparisonTextQuoteListOfLists = StringX.splitStrIntoWordChunks(textWords1, desiredListSize);
for (List<String> text1List : text2ListOfLists) {
System.out.println("textList1 = " + text1List.toString() + " text2ListOfLists = " + comparisonTextQuoteListOfLists.toString());
if (comparisonTextQuoteListOfLists.contains(text1List))
{
System.out.println("MATCH!!");
} else {
System.out.println("NO MATCH!!");
}
}
ВЫХОД:
textList1 = [key1 key2 key3 key4 key5, key2 key3 key4 key5 key6, key3 key4 key5 key6 key7] text2ListOfLists = [[key111 key112 key113 key114 key115, key112 key113 key114 key115 key116, key113 key114 key115 key116 key117], [key110 key12 key13 key14 key15, key12 key13 key14 key15 key16, key13 key14 key15 key16 key17]]
NO MATCH!!
textList1 = [key11 key12 key13 key14 key15, key12 key13 key14 key15 key16, key13 key14 key15 key16 key17] text2ListOfLists = [[key111 key112 key113 key114 key115, key112 key113 key114 key115 key116, key113 key114 key115 key116 key117], [key110 key12 key13 key14 key15, key12 key13 key14 key15 key16, key13 key14 key15 key16 key17]]
NO MATCH!!