java8 list转map
//按id属性为map的key值 Map<Integer, User> userMap = list.stream().collect(Collectors.toMap(User::getId, user -> user));
注意:这里属性值必须不能重复,不然会报错
举例:
public class HelloWorld { public static void main(String[] args) { Random random = new Random(); List<User> list = new ArrayList<>(); for(int i=1;i<=10;i++) { String group = (random.nextInt(3) + 1) + "组";//1-3组随机 User u = new User(i, "用户-" + i, group); list.add(u); } //按id属性分组 Map<Integer, User> userMap = list.stream().collect(Collectors.toMap(User::getId, user -> user)); System.out.println("list-map 后:" + userMap); } private static class User{ Integer id; String name; String group; public User(Integer id, String name, String group) { this.id = id; this.name = name; this.group = group; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getGroup() { return group; } public void setGroup(String group) { this.group = group; } @Override public String toString() { return "User{" + "id=" + id + ", name='" + name + '\'' + ", group='" + group + '\'' + '}'; } } }
执行结果:
list-map 后:{ 1=User{ id=1, name='用户-1', group='1组' }, 2=User{ id=2, name='用户-2', group='3组' }, 3=User{ id=3, name='用户-3', group='3组' }, 4=User{ id=4, name='用户-4', group='3组' }, 5=User{ id=5, name='用户-5', group='3组' }, 6=User{ id=6, name='用户-6', group='3组' }, 7=User{ id=7, name='用户-7', group='1组' }, 8=User{ id=8, name='用户-8', group='2组' }, 9=User{ id=9, name='用户-9', group='1组' }, 10=User{ id=10, name='用户-10', group='1组' } }
逃避不一定躲得过,面对不一定最难过