Java 8 字符串比较

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

最佳答案

如果要查找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 的大小。

关于Java 8 字符串比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51479735/

相关文章:

java - 使用 GridFSOperations 获取所有文档

c - char[] 如何表示 UTF-8 字符串?

python - 确定字符串是否包含任何货币符号?

java - 在 java 中拆分字符串然后添加到 ArrayList 的更快方法

javascript - 从单个数组中的多个值中查找单个值

java - 使用 ThreadPoolExecutor 在同一线程中的 Runnable 实例之间共享数据

java - Maven 拒绝从远程存储库下载 aar 打包的依赖项

java - spring如何上传图片到/src/main/webapp/Theme/img文件夹

c - 如何比较两个文件中的字符串?

java - 为什么 HashMap<Integer,ArrayList<Integer>> 不能转换为 HashMap<Integer,List<Integer>>