Java 8字符串比较

时间:2018-07-23 13:15:35

标签: 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));

1 个答案:

答案 0 :(得分:6)

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

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

然后,您可以简单地遍历mylist并检查setOfItems中是否包含任何元素。

mylist.stream().anyMatch(setOfItems::contains);

这使您的O(n * k)问题降到了O(n + k),其中nk的大小分别为mylistitems。 / p>