我有两个字符串列表。我想检查一个列表中的任何字符串是否在另一个列表中可用。使用下面的方法失败了。
请让我知道一个更好的方法
List<String> mylist = Arrays.asList(stringArray1);
List<String> items = Arrays.asList(stringArray2);
return mylist.stream().anyMatch(t->items.stream().anyMatch(t::contains));
如果你想查找mylist
中是否存在items
中的任何元素,你可以先将items
变成Set
:
Set<String> setOfItems = new HashSet<>(items);
然后,您可以简单地迭代mylist
并检查setOfItems
中是否包含任何元素。
mylist.stream().anyMatch(setOfItems::contains);
这使你的O(n * k)
问题下降到O(n + k)
,其中n
和k
分别是mylist
和items
的大小。