【发布时间】:2020-05-03 21:43:03
【问题描述】:
我有 if 条件,我正在检查字符串是否相等,如果它们匹配,我将它们存储在 Set 中。然后我循环通过 Set 检查是否存在 ENUM3 值,如果是,我将那个特定的字符串替换为值 String Java 。我正在使用 Iterator 循环并检查是否相等。我正在寻找使用流的相同功能,其中
1. I can loop through Set
2. Check for String equality
3. If ENUM3 found then replace with Java
4. Save all the matched String
这是我的代码
{
Set<String> only = new HashSet<String>();
Iterator<Mark> itr = Marks.iterator();
while (itr.hasNext()) {
Mark find = itr.next();
if (ENUM1.getData().equals(find.search())||ENUM3.getData().equals(find.search())) {
only.add(find.search());
only = only.stream()
.map(macro -> macro.equals(ENUM3.getData()) ? "Java" : macro).collect(Collectors.toSet());
}
}
}
这是我尝试使用 Stream 的方法
only = only.stream()
.map(macro -> macro.equals(ENUM3.getData()) ? "Java" : macro)
.collect(Collectors.toSet());
【问题讨论】:
-
你的逻辑有点难以理解。你为什么在每次迭代中循环通过
only?为什么不在while循环的末尾这样做呢? -
对不起,我没有得到你的问题。基本上我要做的就是通过迭代 Set 检查字符串是否相等,如果它们匹配则保存值,如果值匹配 ENUM3,只需将其替换为 String java。使用上面的流代码字符串替换是可能的,因为我正在寻找只使用流来循环 Set 并检查字符串是否相等,简而言之,用 Streams 替换 Iterator 逻辑。让我知道这是否有帮助
标签: java java-8 iterator java-stream refactoring