Aes*_*eir 3 java lambda java-8
我有一个字符串列表,我想转换为地图.我尝试了以下,但我似乎无法弄清楚为什么它不起作用
List<String> dataList = new ArrayList<>( //code to create the list );
Map<String, Double> doubleMap = dataList.stream().collect(Collectors.toMap(o->o, Double::new));
Run Code Online (Sandbox Code Playgroud)
我得到的是:
java.lang.NumberFormatException: For input string: "Test1"
Run Code Online (Sandbox Code Playgroud)
它似乎试图将一个字符串放入值(这是一个Double)而不是创建一个空/ null double.
我基本上希望地图包含String,每个记录0.0.
您正在尝试将a传递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)));
Run Code Online (Sandbox Code Playgroud)
相反,写:
Map<String, Double> doubleMap = dataList.stream().collect(Collectors.toMap(o->o, o->0.0));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
108 次 |
| 最近记录: |