作为推荐的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
ORkey2 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!!
按照这里的建议,我正在使用以下代码检查List >是否包含与List中的任何元素匹配的子列表。对于(List
Collections.disjoint()
返回true,因为第一个List
-text1List-包含String
元素,第二个List
-compareTextQuoteListOfLists-包含List<String>
元素。因此,两个List
没有共同的元素。
看来您应该使用:
下面的代码提供了我需要的功能: