我对Java 8(仍在学习)并不熟悉,并希望看看我是否可以使用流找到与下面代码相同的东西.
下面的代码主要尝试为String中的每个值获取相应的double值,然后将其求和.在这种格式的任何地方我找不到多少帮助.我不确定使用流是否会清理代码或使其变得更加混乱.
// safe assumptions - String/List (Key/Value) cannot be null or empty
// inputMap --> Map<String, List<String>>
Map<String, Double> finalResult = new HashMap<>();
for (Map.Entry<String, List<String>> entry : inputMap.entrySet()) {
Double score = 0.0;
for (String current: entry.getValue()) {
score += computeScore(current);
}
finalResult.put(entry.getKey(), score);
}
private Double computeScore(String a) { .. }
Run Code Online (Sandbox Code Playgroud) 有人可以帮我处理下面的代码吗?我想要一个等效的使用Optional函数。
public String getMyRequiredValue(Optional<String> value) {
if(value.isPresent()) {
Optional<String> optionVal = getAnotherValue(value.get());
if(optionVal.isPresent()) {
return optionVal.get();
} else {
return null;
}
} else {
return "Random";
}
}
public Optional<String> getAnotherValue(String value) { ... }
Run Code Online (Sandbox Code Playgroud)
只是一个说明我试过这个,但它不起作用
return value.map(lang -> getAnotherValue(lang).orElse(null)).orElse("Random");
Run Code Online (Sandbox Code Playgroud)
不起作用的是 - 当值存在并getAnotherValue返回时,Optional.empty()我希望原始函数返回null。它"Random"现在正在返回。
我的假设是因为该map方法返回null它被替换为"Random".
请注意,原始代码是由其他人编写的。因为它有很多依赖项,所以我无法更改输入/输出参数。:(
我是新手,在java 8流+ lambda中努力学习.有人可以用下面的代码帮助我吗?需要从列表中找到第一人的年龄是可选的.此列表可以为null.
缺少代码 - null检查列表的第一个元素.想要检查一下.
相当于下面一段代码的东西.
//input parameter
//Optional<List<Person>> persons
public Integer getAgeOfFirstPerson(Optional<List<Person>> persons) {
if (!persons.isPresent()) {
return null;
}
Integer age = persons.get()
.get(0)
.getAge();
return age;
}
//Person.java
class Person {
Integer age;
//getters and setters
}
Run Code Online (Sandbox Code Playgroud) 我对Java 8并不熟悉,并希望看看我是否可以使用流找到与下面代码相同的东西.
下面的代码主要尝试查找具有最大值数的键并返回该键.在这种格式的任何地方我找不到多少帮助.
int max = 0;
String maxValuesString = null;
for (Map.Entry<String, List<String>> entry : map.entrySet()) {
if(max < entry.getValue().size()) {
maxValuesString = entry.getKey();
max = entry.getValue().size();
}
}
Run Code Online (Sandbox Code Playgroud)