我得到了一个要转换为 map 的字符串列表。我尝试了以下但我似乎无法弄清楚为什么它不起作用
List<String> dataList = new ArrayList<>( //code to create the list );
Map<String, Double> doubleMap = dataList.stream().collect(Collectors.toMap(o->o, Double::new));
我得到的是:
java.lang.NumberFormatException: For input string: "Test1"
它似乎试图将一个字符串放入值(它是一个 Double)而不是创建一个空的/空的 double。
我基本上希望 map 包含字符串,每条记录都为 0.0。
最佳答案
您正在尝试将 String
传递给 public Double(String s)
构造函数,如果您的 List
包含任何 >String
无法解析为 double
。
当您将 Double
构造函数的方法引用传递给 toMap
时,它等同于:
Map<String, Double> doubleMap = dataList.stream().collect(Collectors.toMap(o->o, o->new Double(o)));
相反,写:
Map<String, Double> doubleMap = dataList.stream().collect(Collectors.toMap(o->o, o->0.0));
关于java - 将列表转换为 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35812887/