Java8字符串比较

Java8字符串比较,java,string,arraylist,java-8,java-stream,Java,String,Arraylist,Java 8,Java Stream,我有两个字符串列表。 我想检查一个列表中的任何字符串是否在另一个列表中可用。 使用了以下失败的方法 请告诉我一个更好的方法 List<String> mylist = Arrays.asList(stringArray1); List<String> items = Arrays.asList(stringArray2); return mylist.stream().anyMatch(t->items.stream().anyMatch(t::contains)

我有两个字符串列表。 我想检查一个列表中的任何字符串是否在另一个列表中可用。 使用了以下失败的方法

请告诉我一个更好的方法

List<String> mylist = Arrays.asList(stringArray1);
List<String> items = Arrays.asList(stringArray2);

return mylist.stream().anyMatch(t->items.stream().anyMatch(t::contains));
List mylist=Arrays.asList(stringArray1);
列表项=Arrays.asList(stringArray2);
返回mylist.stream().anyMatch(t->items.stream().anyMatch(t::contains));

如果要查找
mylist
中的任何元素是否存在于
items
中,可以先将
items
转换为
集合

Set<String> setOfItems = new HashSet<>(items);

这将您的
O(n*k)
问题归结为
O(n+k)
其中
n
k
分别是
mylist
items
的大小。

Retainal
可能是什么?您想获得什么?所有常见的条目?@Eugene如果任何一个值在另一个列表中可用,我需要一个布尔值在本例中,
myList.stream().anyMatch(items::contains)
应该可以完成以下任务:您的一个Rockstar,谢谢您仍然可以使用一行代码,
myList.stream().anyMatch(新的HashSet(items)::contains)。由于这种优化只会为较大的集合带来回报,因此甚至可以使用阈值,例如
static final int HASH_threshold=30…mylist.stream().anyMatch((items.size()
mylist.stream().anyMatch(setOfItems::contains);