
您可以修改解决方案以将
Stream的
String数组收集到中
Map(而不是使用
forEach):
Map<String, Double> kvs = Arrays.asList("a:1.0", "b:2.0", "c:3.0") .stream() .map(elem -> elem.split(":")) .collect(Collectors.toMap(e -> e[0], e -> Double.parseDouble(e[1])));当然,该解决方案不能防止无效输入。也许您应该添加一个过滤器,以防拆分字符串没有分隔符:
Map<String, Double> kvs = Arrays.asList("a:1.0", "b:2.0", "c:3.0") .stream() .map(elem -> elem.split(":")) .filter(elem -> elem.length==2) .collect(Collectors.toMap(e -> e[0], e -> Double.parseDouble(e[1])));这仍然不能保护您免受所有无效输入的侵害(例如,
"c:3r"将导致
NumberFormatException抛出
parseDouble)。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)