【问题标题】:java 8 streams copy specific objects from map to listjava 8流将特定对象从地图复制到列表
【发布时间】:2020-11-28 17:50:48
【问题描述】:

在 Java8/streams 中寻找替代代码。
我想使用预定义的键数组将特定值从 Map 复制到 List 中。

在 Java 7 中完成此任务的代码如下:

public List<Fruit> getFruitList(Map<String, Fruit> fruitMap) {
    final String[] fruitNames = { "apple", "banana", "mango" };
    final ArrayList<Fruit> fruitList = new ArrayList<>(fruitNames.length);
    for (int i = 0; i < fruitNames.length; i++) {
        final String fruitName = fruitNames[i];
        final Fruit fruit = fruitMap.get(fruitName);
        if (fruit != null) {
            fruitList.add(fruit);
        }
    }
    fruitList.trimToSize();
    return fruitList;
}

【问题讨论】:

    标签: java-8 java-stream


    【解决方案1】:

    自己想出了一个可能的解决方案:

    return Stream.of(fruitNames)
                 .map(fruitMap::get)
                 .filter(Objects::nonNull)
                 .collect(Collectors.toList());
    

    【讨论】:

    • 可能想使用Objects.nonNull。拥有干净的 lambda 代码的好选择。
    猜你喜欢
    • 1970-01-01
    • 2021-11-21
    • 2018-04-12
    • 2018-08-27
    • 2020-08-29
    • 1970-01-01
    • 1970-01-01
    • 2018-10-03
    • 1970-01-01
    相关资源
    最近更新 更多