使用Java流将索引集映射到对象集

时间:2019-11-11 13:41:47

标签: java stream java-stream

尝试将一组索引映射到列表中的相应对象,然后作为一组返回。

List aList = Arrays.asList(new Object(), new Object(), new Object(), new Object(), new Object(), new Object());

Set.of(0, 2, 3)
     .stream()
     .flatMap(index -> aList.get(index))     // error on this line
     .collect(Collectors.toSet());

Error message: no instance(s) of type variable(s) R exist so that Object conforms to Stream<? extends R>

1 个答案:

答案 0 :(得分:1)

在此示例中,您需要map,而不是flatMap。当原始flatMap的每个元素映射到多个元素时,将使用Stream

Set.of(0, 2, 3)
  .stream()
  .map(index -> aList.get(index))
  .collect(Collectors.toSet());

编辑:您的更新问题使我的替代建议过时了,但是其余代码段仍然有效。