在Java 8中,当流中的重复键时,如何收集形成List的值
发布时间:2020-05-30 07:52:15 所属栏目:Java 来源:互联网
导读:我有一个二维数组或EntrySet形式的元素流.我需要在地图中收集这些内容.现在的问题是元素流可以有重复的元素.假设我希望该值为列表: MapString,ListString 示例: class MapUtils{// Function to get Stream of String[]private static StreamString[] getMap
|
我有一个二维数组或EntrySet形式的元素流.我需要在地图中收集这些内容.现在的问题是元素流可以有重复的元素.假设我希望该值为列表: Map<String,List<String>> 示例: class MapUtils
{
// Function to get Stream of String[]
private static Stream<String[]> getMapStream()
{
return Stream.of(new String[][] {
{"CAR","Audi"},{"BIKE","Harley Davidson"},"Pulsar"}
});
}
// Program to convert Stream to Map in Java 8
public static void main(String args[])
{
// get stream of String[]
Stream<String[]> stream = getMapStream();
// construct a new map from the stream
Map<String,String> vehicle =
stream.collect(Collectors.toMap(e -> e[0],e -> e[1]));
System.out.println(vehicle);
}
}
输出: java.lang.IllegalStateException: Duplicate key Harley Davidson 我想有办法 >我可以在e-> e [0]和e-> e [1]上操作以解决问题.那可能吗?为此,我需要访问正在收集的当前地图对象.我不确定这是否合理. 预期产出: {CAR=[Audi],BIKE=[Harley Davidson,Pulsar]}
解决方法这就是groupingBy的用途:Map<String,List<String>> vehicle =
stream.collect(Collectors.groupingBy(e -> e[0],Collectors.mapping(e -> e[1],Collectors.toList())));
输出图: {CAR=[Audi],Pulsar]} (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
