【发布时间】:2019-04-05 22:41:40
【问题描述】:
我有一个用例,我需要读取文件并获取序列的分组以及与序列关联的值列表。文件中这些记录的格式类似于 sequence - val , example
10-A
10-B
11-C
11-A
我希望输出是一个映射 (Map<String,List<String>>),其中序列作为键,与其关联的值列表作为值,如下所示
10,[A,B]
11,[C,A]
有没有一种方法可以在不为这些记录创建 POJO 的情况下做到这一点?我一直在尝试探索Collectors.groupingBy 的用法,我看到的大多数示例都是基于创建 POJO。
我一直在尝试写这样的东西
Map<String, List<String>> seqCpcGroupMap = pendingCpcList.stream().map(rec ->{
String[] cpcRec = rec.split("-");
return new Tuple2<>(cpcRec[0],cpcRec[1])
}).collect(Collectors.groupingBy(x->x.))
或
Map<String, List<String>> seqCpcGroupMap = pendingCpcList.stream().map(rec ->{
String[] cpcRec = rec.split("-");
return Arrays.asList(cpcRec[0],cpcRec[1]);
}).collect(Collectors.groupingBy(x->(ArrayList<String>)x[0]));
我无法为groupingBy 函数提供任何可能发生groupingBy 的键,有没有办法做到这一点,还是我必须创建一个POJO 才能使用groupingBy?
【问题讨论】:
标签: java lambda collections java-8 java-stream