使用java.util.stream将列选择到记录列表中

使用java.util.stream将列选择到记录列表中,java,java-8,java-stream,Java,Java 8,Java Stream,从列表中 输出: 类java.util.HashSet:[HF\U合成器\U 1,功率计, 串行服务器、工作台ETH开关、CW传感器、低频发生器、, 频谱分析仪,PC机监控] 它能工作,但有点复杂,不是吗 我的问题是:提出一个更简洁/可读的代码您可以省去大多数与流相关的操作,只需使用addAll方法直接将所有元素添加到集合中: Set<String> result = new HashSet<>(); // or another kind of Set statuses.

列表中

输出:

类java.util.HashSet:[HF\U合成器\U 1,功率计, 串行服务器、工作台ETH开关、CW传感器、低频发生器、, 频谱分析仪,PC机监控]

它能工作,但有点复杂,不是吗


我的问题是:提出一个更简洁/可读的代码

您可以省去大多数与流相关的操作,只需使用addAll方法直接将所有元素添加到集合中:

Set<String> result = new HashSet<>(); // or another kind of Set
statuses.forEach(r -> result.addAll(r.outOfDateProperty().get()));
Set result=new HashSet();//还是另一套
statuses.forEach(r->result.addAll(r.outOfDateProperty().get());

它没有太多地使用流API,但是它很短,也很容易阅读。

我认为你做得再好不过了。
List< Record > statuses = worker.getData()._status;
final Set<String> result =
   statuses
      .stream()
      .flatMap(
         r -> r.outOfDateProperty().get().stream())
      .collect( Collectors.toSet());
System.err.println( result );
Set<String> result = new HashSet<>(); // or another kind of Set
statuses.forEach(r -> result.addAll(r.outOfDateProperty().get()));