我希望对以下示例进行聚合:
我有一个实体列表List<CsvEntity> toSort =
,如下所述:
toSort.add(new CsvEntity(...))..
public class CsvEntity {
String OCCURRENCES, STATUS, MESSAGE, STACK_TRACE;
}
数据:
OCCURRENCES, STATUS,MESSAGE,STACK_TRACE
1, FAIL, MESSAGE1, STACK1
1, PASS, MESSAGE1, STACK1
1, FAIL, MESSAGE1, STACK1
1, FAIL, MESSAGE2, STACK2 => aggregate MESSAGE & STACK_TRACE)
1, PASS, MESSAGE2, STACK2
1, PASS, MESSAGE3, STACK3
1, PASS, MESSAGE3, STACK3
结果应该是(作为数据结构):
OCCURRENCES,STATUS,MESSAGE,STACK_TRACE
3, FAIL, MESSAGE1, STACK1
2, FAIL, MESSAGE2, STACK2
2, PASS, MESSAGE3, STACK3
我尝试使用:
Map<String, Integer> group = toSort.stream().collect(
Collectors.groupingBy(
CsvEntity::getSTACK_TRACE,
Collectors.groupingBy(CsvEntity::getMESSAGE),
Collectors.summingInt(s -> Integer.parseInt(s.getOCCURRENCES()))
)
);
但是这个组仅返回 STACK_TRACE 而不是整个 CsvEntity...。是否可能改变代码,让其返回整个 CsvEntity?
CsvEntity
的成员应该是常量吗?如果不是,请不要使用大写字母来命名它们。 - user9455968public class CsvEntity
而不是public enum CsvEntity
? - Victor Gubin