【发布时间】:2020-05-18 22:11:08
【问题描述】:
按照here 的建议,我正在使用以下代码检查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!!");
}
}
输出:
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 OR key2 key3 key4 key5 key6 OR key3 key4 key5 key6 key7(确实如此)它应该返回 true..
谢谢!
更新:
以下是更新后的代码+@Eran 代码的输出:
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!!
【问题讨论】:
标签: java list collections apache-commons