gpt4 book ai didi

java - 流 : how map in Streams work

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:22:23 24 4
gpt4 key购买 nike

了解map在 Streams 中发挥更好的作用我正在尝试这样的事情:

String inputString="1+3+5";
Stream.of(inputString.split("\\+")).map(
eachStringLiteral -> {
output += mapOfStringAndNumber.get(eachStringLiteral) + literal;
}
);

在哪里 inputString 是:

String inputString = "1+3+5";

但是,编译器会报错,我不知道为什么:

The method map(Function) in the type Stream is not applicable for the arguments (( eachStringLiteral) -> {})

我还需要一些帮助才能理解

中的语法

Function<? super String,? extends 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 中的每个输入 String 提供一个 Double 值,您可以使用 Pattern#splitAsStream(CharSequence input)将您的输入 String 直接拆分为 Stream 并使用 Collectors.joining(CharSequence delimiter)使用 + 作为分隔符构建您的 output,因此您的最终代码可能是:

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

关于java - 流 : how map in Streams work,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40931568/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com