java – Streams:Streams中的map如何工作
发布时间:2020-12-15 04:36:55 所属栏目:Java 来源:网络整理
导读:为了更好地理解Streams中的map函数,我尝试了这样的事情: String inputString="1+3+5";Stream.of(inputString.split("+")).map( eachStringLiteral - { output += mapOfStringAndNumber.get(eachStringLiteral) + literal; }); inputString是: String inp
为了更好地理解Streams中的map函数,我尝试了这样的事情:
String inputString="1+3+5"; Stream.of(inputString.split("+")).map( eachStringLiteral -> { output += mapOfStringAndNumber.get(eachStringLiteral) + literal; } ); inputString是: String inputString = "1+3+5"; 然而,编译器抱怨并且我不知道为什么:
我还需要一些帮助才能理解语法 功能< ;?超级弦,?延伸R>. 更新 这是完整的代码,说明了我想要实现的目标: HashMap<String,Double> mapOfStringAndNumber=new HashMap<String,Double>(); mapOfStringAndNumber.put("1",270.5); mapOfStringAndNumber.put("2",377.5); mapOfStringAndNumber.put("3",377.5); String inputString="1+3+5"; String literal="+"; String output; java.util.stream.Stream.of(inputString.split("+")).map(eachStringLiteral-> output+=mapOfStringAndNumber.get(eachStringLiteral)+literal 解决方法
假设您为map mapOfStringAndNumber中的每个输入字符串提供Double值,您可以使用
Pattern#splitAsStream(CharSequence input) 直接将输入字符串拆分为Stream,并使用
Collectors.joining(CharSequence delimiter) 以as分隔符构建输出,因此您的最终代码可能是:
Map<String,Double> mapOfStringAndNumber = new HashMap<>(); mapOfStringAndNumber.put("1",270.5); mapOfStringAndNumber.put("3",377.5); mapOfStringAndNumber.put("5",377.5); String inputString = "1+3+5"; String output = Pattern.compile("+") .splitAsStream(inputString) .map(mapOfStringAndNumber::get) .map(d -> Double.toString(d)) .collect(Collectors.joining("+")); System.out.println(output); 输出: 270.5+377.5+377.5 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |