Java8 Stream流之map集合键值对换

目的:因为在开发过程中会使用到字典,通过实体中的字典字段做对照,之前项目中大多数是通过注解去做字典对照的,只需要加在实体上就可以实现对照字段填充。但现在使用的是枚举或者是通过接口获取的字典集合,基本上都是通过键找值的,对于一些特殊场景,比如在导入excel时(场景为项目中统一使用InputStream的方式读取数据)有些下拉框里的值读取到都是值,这时就需要通过字典的值去找键了。

如果是这样的话可以将字典里的值遍历然后对调键值,这样就可以通过新组装的键去找值了,但其实并不优雅,之前在项目中有看到过别的同事写这样的键值对换的代码但是没想到使用场景,后来做excel导入的时候才想起来这个事,于是就借鉴了一下。

map.entrySet().stream()
                .collect(Collectors.toMap(Map.Entry::getValue, Map.Entry::getKey));

通过java8的toMap方法将集合中的键值对调,然后发挥组合好的集合。

通过这种方式可以获取到一个新的键值对调后的集合,那么举一反三其实也可以获取一个实体中的两个字段做一个map集合,这样在做查询的时候就不需要做两遍循环查找数据了,从而降低时间复杂度提升代码运行效率。

Map<String, String> userMap = userList.stream().collect(Collectors.toMap(User::getName, User::getPhone));

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

*

625 次浏览