我有清单清单。我需要根据索引从这些列表中提取项目,并使其成为单独的arraylist。我尝试通过添加
List<List<String>> multilist = new ArrayList<>();
List<List<String>> totalRecords= totalRecordsList;
List<String> targetList = totalRecords.stream().filter(e ->
e.get(index)!=null).flatMap(List::stream) .collect(Collectors.toCollection(ArrayList::new));
multilist.add(targetList);
但是它仍然在列表列表中,而不是作为单独的arraylist对象存储,而是将所有项目组合在一起。无论我哪里出错,都能请您纠正。
谢谢
答案 0 :(得分:2)
此操作:
.flatMap(List::stream)
将输入列表中的所有内容平铺到流中。
如果您只想使用每个列表的第index
个元素,请将其替换为:
.map(e -> e.get(index))
总体:
totalRecords.stream()
.filter(e -> e.get(index)!=null)
.map(e -> e.get(index))
.collect(Collectors.toCollection(ArrayList::new))
您可以通过反转过滤器和地图来避免重复获取操作:
totalRecords.stream()
.map(e -> e.get(index))
.filter(Object::nonNull)
.collect(Collectors.toCollection(ArrayList::new))