【发布时间】:2020-10-20 17:18:55
【问题描述】:
如果使用匹配的字符串找到匹配项,我想使用流填充字符串数组,然后将新字符串添加到数组中。
示例此代码将返回一个列表:
List<String> source = Arrays.asList("one", "two", "three");
String s ="Two-three-six-seven";
List<String> target = source.stream()
.filter(s.toLowerCase()::contains)
.collect(Collectors.toList());
}
创建一个包含“二”和“三”的列表(目标)。
我现在如何检查目标列表是否有一个值,然后我添加另一个值,例如“数字” 最终得到一个包含“二”、“三”和“数字”的列表
我知道这可以通过在流之外添加更多代码来实现,但我正在尝试在流中完成所有操作
【问题讨论】:
-
预期结果是什么?
-
if (target.contains("two")) target.add("numbers"); -
目标数组是“二”“三”和“数字”。 "numbers" 是目标数组不为空时添加的新元素
-
我认为您错过了直播的重点。流用于获取一组数据,对其进行操作,并输出一组修改后的数据。我不会说你不能使用流添加数据,有人可能会提出一些 hacky 映射方法来做到这一点,但这并不是流的意义所在。最干净的解决方案是保留您拥有的代码,然后在事后添加额外的元素。
-
我会使用
Set而不是List,另外