地图<字符串,地图<字符串,租车>>到列表<汽车>使用Java 8

RubioRic:

比方说,我有结构的称号描述:

Map<String, Map<String, Car>> mapNeighborhood

包含在分别由地址和板索引的邻域中的所有汽车。我想选择所有的红色汽车重绘他们在黑色。为了完成这个任务,我曾经试图“扁平化”这两个地图和取得使用Java清单8.一旦我得到的名单,应用谓词我只能选择红色轿车和应用重新粉刷。

List<Car> listCars = new ArrayList<Car>();

mapNeighborhood.values().forEach(map -> map.values()
                                           .forEach(car -> listCars.add(car)));

listCars.stream().filter(Car::isRed)
                 .forEach(car -> car.repaint(Color.Black));

我敢肯定,你可以只用一行在Java中实现8相同的,但我认为你可能会失去可读性。

我的问题是:是否有压扁映射到表的另一种更简洁的方式?也许使用flatMap提前致谢。

鲍里斯蜘蛛:

你并不需要一个中间 List

mapNeighborhood.values().stream()
                        .flatMap(byPlate -> byPlate.values().stream())
                        .filter(Car::isRed)
                        .forEach(car -> car.repaint(Color.Black))

我觉得这是两个比你的代码和更短的可读性。这也是客观得多更加高效,无论是在时间和空间。


还要注意的是Car::isRed有些奇怪,你将需要为每一个可能的支票ColorCar-增加一个新color的季节,重新实现Car

Color::isRed更有道理,用Car工具Colored或一些这样的

interface Colored {
    Color getColor();
}

// in Color
public static boolean isRed(Colored colored) {
    return Objects.equals(colored.getColor(), RED);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Java流:发行约收集到地图<字符串,对象>

Java的8个流地图<字符串,列表<字符串值>>为每个关键总和

一个文本文件转换为地图<字符串,列表<字符串>>使用lambda

如何创建列表<T>地图<字符串,T>而不是地图<字符串,列表<T >>?

Java的8名单<地图<字符串,对象>>到列表<地图<字符串,对象>>的键组和值数

变换一个List <对象>的地图<字符串,整数>使得字符串不是使用Java 8流重复值

Java的8:如何字符串转换为地图<String,字符串>?

Java的8流列表<美孚>地图<日期,地图<字符串,龙>>有条件groupingBy

转换字符串地图<整数,字符串>在Java 8

Java的8 STREM过滤图在地图 - 地图<字符串,地图<字符串,员工>>

Java的8流,对象的转换列表地图<字符串,将<字符串>>

Java的8炼油LAMBDA地图<字符串,列表<字符串>>将字符串地图关键要求

Java的8个流 - 查找最大计数值地图<字符串,列表<对象>>

在列表中的Java 8嵌套空检查的字符串的地图

Java流列表<地图<字符串,双>>基于字符串需要平均

收集列表<对象>地图<字符串,列表<对象>>中的Java 8中使用流

创建地图字符串和对象在Java中的列表8

Java8流列表<地图<字符串,对象>> groupingBy和计数值

创建使用Java 8流API字符串和排序列表中的地图

Java的游戏 - 绑定对象的列表,并附有地图<字符串,AnotherObject>内

如何将一个POJO的列表转换地图<字符串,列表>在Java流?

Java类扩展的HashMap <字符串,地图<字符串,列表<字符串>>重写方法放不工作

比较一个List <地图<String,字符串>>到一个List <地图<字符串,对象>> Java的

以列表添加值内地图<字符串,列表> Java中8

将GO YAML解组到地图或字符串

从Java 8的地图列表中获取字符串

使用Java 8 Lambda将地图转换为字符串

java-如何将字符串解析回地图列表

减少地图(地图(地图(列表(字符串))))地形