作者:花神 | 来源:互联网 | 2023-05-25 12:13
在java 8
如何array
使用2D将2D 转换为Map stream()
.如果键值已经存在,它也应该更新值.
String[][] array=new String[][]{{"a","b"},{"a","c"},{"b","d"}};
HashMap map=new HashMap();
for(String[] arr:array){
map.put(arr[0],arr[1]);
}
我试过这个
map=Arrays.stream(array).collect(Collectors.toMap(x->x[0],x->x[1]));
错误
错误:(38,45)java:不兼容类型:推理变量R具有不兼容的边界等式约束:java.util.Map上限:java.util.HashMap,java.lang.Object
emesx..
6
添加合并重复键的运算符:
String[][] array = new String[][]{{"a", "b"}, {"a", "c"}, {"b", "d"}};
Map m = Arrays.stream(array)
.collect(Collectors.toMap( kv -> kv[0],
kv -> kv[1],
(oldV, newV) -> newV)
));
格式化这些单行将是有一天的问题..
1> emesx..:
添加合并重复键的运算符:
String[][] array = new String[][]{{"a", "b"}, {"a", "c"}, {"b", "d"}};
Map m = Arrays.stream(array)
.collect(Collectors.toMap( kv -> kv[0],
kv -> kv[1],
(oldV, newV) -> newV)
));
格式化这些单行将是有一天的问题..
@Exbury因为`toMap`被定义为`public static
Collector > toMap`,带有`Map <>`返回类型.您必须手动向下转换为实现.
当规范从不保证它将是一个`HashMap`时,不要将`Map`强制转换为`HashMap`.如果你真的需要它是一个`HashMap`,使用`Collectors.toMap(KV - > KV [0],KV - > KV [1],(oldV,newV) - > newV,HashMap中::新)`