final CollectionListListObject contents = scoreDetailVOgetContents; final CollectionString sheetNames = scoreDetailVOgetSheetNames;大小一样sheetNames 使用stream怎样获取另一个集合的数据不能使用foreach和get方法
如果两个集合的大小是一样的,并且你想要根据"sheetNames"集合获取"contents"集合中对应的数据,可以使用Java 8的Stream API中的zip操作来实现。以下是一个示例代码片段,演示如何使用Stream来获取另一个集合的数据:
final Collection<List<List<Object>>> contents = scoreDetailVO.getContents();
final Collection<String> sheetNames = scoreDetailVO.getSheetNames();
List<List<Object>> result = IntStream.range(0, sheetNames.size())
.mapToObj(i -> contents.stream()
.flatMap(List::stream)
.collect(Collectors.toList())
.get(i))
.collect(Collectors.toList());
// 使用result集合中的数据进行后续操作
在上述代码中,我们使用IntStream.range方法来生成一个从0到"sheetNames"集合大小的整数流。然后,我们通过使用flatMap操作将"contents"集合中的所有元素连接到一个流中。接下来,我们使用collect操作将流中的所有元素收集到一个列表中。最后,我们使用get操作从列表中获取指定索引的元素,这个索引是通过IntStream生成的整数流中的元素。
请注意,这种做法假设了"contents"集合中的元素是按照顺序对应于"sheetNames"集合中的元素的。如果两个集合的顺序不同,这种方法可能会获取到错误的数据
原文地址: https://www.cveoy.top/t/topic/iQoZ 著作权归作者所有。请勿转载和采集!