【发布时间】:2021-02-16 17:28:25
【问题描述】:
假设我们有一个如下所示的 excel 电子表格:
StatusCount FirstName LastName ID
1 Tod Mahones 122145
0 Tod Mahones 122145
1 Tod Mahones 122145
-1 Tod Mahones 122145
1 Ronny Jackson 149333
1 Eliza Cho 351995
-1 Eliza Cho 351995
1 James Potter 884214
1 James Potter 884214
-1 Peter Walker 900248
1 Zaid Grits 993213
我如何才能将状态计数总和大于 0 的人的 ID 收集到一个列表中,如果它是 0 或更少,则将其丢弃。所以在上面的excel电子表格中,java中的列表应该是这样的:
List<Integer> = [122145, 149333, 884214, 993213]
更新(添加到目前为止我尝试过的内容):
List<Integer> = csvFile.stream()
.map(Arrays::asList)
.filter(column -> column.get(0).equalsIgnoreCase("1")
.map(column -> column.get(3))
.map(Integer::parseInt)
.sorted()
.collect(Collectors.toList());
我只是通过状态计数 1 来收集它们,但这不是正确的过程,它应该是总结每个人或 ID 的状态计数(我想找到任何骗子都很好),如果它 > 0 则收集到列表中,如果没有则丢弃。
更新 2:我忘了提到 csv 文件作为 List
[[1, Tod, Mahones, 122145],[0, Tod, Mahones, 122145], [1, Tod, Mahones, 122145], ...]
【问题讨论】:
-
到目前为止你做了什么?
-
@iota 添加了我的尝试,谢谢,已经尝试了一段时间没有成功:(
标签: java excel csv java-stream