list转换成Map的三种方法
去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片
.
/**
* 科目实体类
*/
public class Subject
{
private Integer id;
private String subjectName;
public Subject(Integer id, String subjectName){
super();
this.id = id;
this.subjectName = subjectName;
}
public Integer getId(){
return id;
}
public void setId(Integer id){
this.id = id;
}
public String getSubjectName(){
return subjectName;
}
public void setSubjectName(String subjectName){
this.subjectName = subjectName;
}
}
public class ListToMap
{
public static void main(String[] args)
{
List<Subject> list = new ArrayList<>();
Subject sub1 = new Subject(1,"语文");
Subject sub2 = new Subject(2,"数学");
Subject sub3 = new Subject(3,"英语");
list.add(sub1);
list.add(sub2);
list.add(sub3);
//方法一 for循环,创建一个Map集合 使用put(key,value)方法
Map<Integer,Subject> subMap = new HashMap<>();
for(Subject sub : list){
subMap.put(sub.getId(), sub);
}
//方法二使用guava工具类
Map<Integer, Subject> subMap2 = Maps.uniqueIndex(list, new Function<Subject, Integer>() {
@Override
public Integer apply(Subject sub) {
return sub.getId();
}
});
//方法三使用java8流形式
Map<Integer, Subject> appleMap = list.stream().collect(Collectors.toMap(Subject::getId, a -> a,(k1,k2)->k1));
}
}