小编mes*_*eso的帖子

Java 8流Map <String,List <String >>每个键的值总和

我对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)

java dictionary list java-8 java-stream

12
推荐指数
2
解决办法
5507
查看次数

可选的&lt;String&gt; 映射函数返回 null

有人可以帮我处理下面的代码吗?我想要一个等效的使用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 refactoring optional-parameters optional java-8

5
推荐指数
1
解决办法
4327
查看次数

可选<List> Java 8 lambda表达式获取第一个元素

我是新手,在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)

lambda optional java-8 java-stream

4
推荐指数
1
解决办法
1万
查看次数

Java 8流 - 查找Map <String,List <Object >>的最大计数值

我对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)

java java-8 java-stream

3
推荐指数
1
解决办法
456
查看次数