parallel-processing - 流 API Java 8 并行处理
问题描述
我有2套
phraseSet
包含“埃菲尔铁塔”、“东京铁塔”
wordSet
包含诸如“埃菲尔”、“塔”之类的词
我如何使用 Java 8 并行流来处理如下逻辑: 1. 对于 中的每个项目phraseSet
,对其进行标记,查看是否所有标记都存在于 中wordSet
,如果存在则将该项目添加到名为 的新集合resultSet
中。在此示例中,resultSet
将包含“埃菲尔铁塔”
如果我使用传统的 for 循环很容易做到,但是在尝试使用并行流时我很困惑,我希望它也更快,因为它是并行处理的。
解决方案
Afilter
和 anallMatch
就足够了:
Set<String> phrases = new HashSet<>(Arrays.asList("eifel tower", "tokyo tower"));
Set<String> words = new HashSet<>(Arrays.asList("eifel", "tower"));
Pattern delimiter = Pattern.compile("\\s+");
Set<String> resultSet = phrases.parallelStream().filter(
phrase -> delimiter.splitAsStream(phrase).allMatch(words::contains)
).collect(Collectors.toSet());
推荐阅读
- javascript - Javascript 用户必须输入 6 个字符的代码
- excel - 如果现在在 IF 公式中添加值,则保持单元格空白
- powerbi - 如何从 csv、excel 或 db 为 Powerbi 中的列或表列表添加描述?
- wpf - 从 WPF 应用程序执行 OAuth 身份验证
- android - 当图像不适合屏幕时缩小图像
- html - 如何将文本移动到框的末尾?
- sql - 用于 Laravel 的 Firebase 与 Google Cloud SQL
- python - 在python中读取csv文件
- mysql - 关于连接表的 SQL
- eclipse - 如何在 Eclipse(氧气版本)中以编程方式关闭索引器?