java8 按对象属性值分组

java

Map<String, List<User>> userMap = list.stream().collect(Collectors.groupingBy(User::getGroup));

示例:

public class HelloWorld {

public static void main(String[] args) {

Random random = new Random();

List<User> list = new ArrayList<>();

for(int i=1;i<=20;i++) {

String group = (random.nextInt(3) + 1) + "组";//1-3组随机

User u = new User(i, "用户-" + i, group);

list.add(u);

}

//按group属性分组

Map<String, List<User>> userMap = list.stream().collect(Collectors.groupingBy(User::getGroup));

System.out.println("分组后:" + 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 + '\'' +

'}';

}

}

}

执行结果:

{

3 组 = [User {

id = 2, name = '用户-2', group = '3组'

}, User {

id = 5, name = '用户-5', group = '3组'

}, User {

id = 7, name = '用户-7', group = '3组'

}, User {

id = 8, name = '用户-8', group = '3组'

}, User {

id = 9, name = '用户-9', group = '3组'

}, User {

id = 12, name = '用户-12', group = '3组'

}, User {

id = 13, name = '用户-13', group = '3组'

}, User {

id = 15, name = '用户-15', group = '3组'

}, User {

id = 16, name = '用户-16', group = '3组'

}],

2 组 = [User {

id = 1, name = '用户-1', group = '2组'

}, User {

id = 17, name = '用户-17', group = '2组'

}, User {

id = 18, name = '用户-18', group = '2组'

}, User {

id = 20, name = '用户-20', group = '2组'

}],

1 组 = [User {

id = 3, name = '用户-3', group = '1组'

}, User {

id = 4, name = '用户-4', group = '1组'

}, User {

id = 6, name = '用户-6', group = '1组'

}, User {

id = 10, name = '用户-10', group = '1组'

}, User {

id = 11, name = '用户-11', group = '1组'

}, User {

id = 14, name = '用户-14', group = '1组'

}, User {

id = 19, name = '用户-19', group = '1组'

}]

}

以上是 java8 按对象属性值分组 的全部内容, 来源链接: utcz.com/z/392284.html

回到顶部