Java 8 Java8流将特定对象从映射复制到列表

Java 8 Java8流将特定对象从映射复制到列表,java-8,java-stream,Java 8,Java Stream,正在寻找Java8/streams中的替代代码。 我想使用预定义的键数组将特定值从地图复制到列表中 在Java 7中完成此任务的代码如下: public List<Fruit> getFruitList(Map<String, Fruit> fruitMap) { final String[] fruitNames = { "apple", "banana", "mango" }; final A

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

在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;
}
public List getFruitList(Map-fruitMap){
最后一个字符串[]水果名={“苹果”、“香蕉”、“芒果”};
最终ArrayList水果列表=新的ArrayList(水果名.length);
for(int i=0;i
我自己想出了一个可能的解决方案:

return Stream.of(fruitNames)
             .map(fruitMap::get)
             .filter(Objects::nonNull)
             .collect(Collectors.toList());
也许你想用。使用干净的lambda代码是一个很好的选择。