2024年5月14日发(作者:)
list转map的三种方法
随着Java8版本的发布,Java 8 Stream API供了一系列的方法
和工具可以帮助程序员们更高效的处理集合数据,比如List转Map
操作,可以使用stream api一系列的操作完成。
List转Map是一个常见的转换操作,它是把List集合中的元素
转换为key和value构建Map集合。Java 8 Stream API 中常用三种
方法完成List转Map操作,它们分别是collectingAndThen()方法,
toMap()方法、groupingBy()方法。
tingAndThen()方法:
CollectingAndThen()方法是收集流元素然后做一个操作,它接
收两个参数,第一参数是一个收集器,它定义了怎么收集流中的数据;
第二个参数是一个函数,它定义了收集完数据后的操作,它接受第一
参数的收集结果作为输入,返回一个新的结果。因此,如果我们要使
用该方法来实现List转Map的操作,需要指定第一个参数的收集器,
例如:(),用来把List中的元素收集为List;
第二参数函数,它定义了收集完List后转换为Map的操作,如下代
码所示:
List
//集流中元素到集合中
Map
().collect(tingAndThen(C
(), Collections::unmodifiableMap));
- 1 -
()方法:
toMap()方法是根据List中的元素建立Map,它接收三个参数,
第一参数定义了如何根据List中的元素构造Map中的key;第二参
数定义了如何根据List中的元素构造Map中的value;第三参数定
义了如果出现重复的key应该怎么处理,后面的元素会覆盖前面的元
素。
假设我们有一个Student类,如下所示:
public class Student {
private String name;
private int age;
//略其他属性和get、set方法
}
我们想把上述Student类型的List转换为Map,key是name,
value是age,可以使用toMap()方法,如下代码所示:
List
//定如何根据Student的属性构建map的key和value,以及出
现重复key时如何处理
Map
().collect((Student::getN
ame, Student::getAge, (v1, v2) -> v2));
ngBy()方法
groupingBy()方法是根据 List 中的元素分组,它接收两个参数,
- 2 -
第一参数定义了如何根据List中的元素分组;第二参数定义了分组
后如何聚合分组后的数据,可以是收集器、值、函数等。
假设我们有多个Student类型的List,如下所示:
List
我们想把上述Student类型的List转换为Map,key是name,
value是Student集合,可以使用groupingBy()方法,如下代码所示:
//定如何根据Student的name属性分组,以及分组后的值
Map
().collect(ngBy(Student:
:getName));
以上就是Java 8 Stream API中常用的三种方法实现List转Map
的操作,这些方法可以让程序员们快速便捷的完成List转Map操作,
使得数据处理变得更有效率。
- 3 -
发布者:admin,转转请注明出处:http://www.yc00.com/web/1715663253a2652649.html
评论列表(0条)