Java 8字符串比较

问题描述 投票:2回答:1

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

请让我知道一个更好的方法

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

return mylist.stream().anyMatch(t->items.stream().anyMatch(t::contains));
java string arraylist java-8 java-stream
1个回答
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的大小。

© www.soinside.com 2019 - 2024. All rights reserved.