java通过Stream对list集合分组

简介: java通过Stream对list集合分组现在有一个List集合,想对该集合中的数据分组处理,想到java8中的stream,就搞来试试,非常给力!例子如下123456789101112131415161718192021222324252...

java通过Stream对list集合分组

现在有一个List集合,想对该集合中的数据分组处理,想到java8中的stream,就搞来试试,非常给力!例子如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
 
package com.maps;
 
public class User{
private Integer id;
private String type;
private String name;
 
public User(){}
public User(Integer id,String type,String name){
this.id = id;
this.type = type;
this.name = name;
}
 
public void setId(Integer id){
this.id = id;
}
 
public Integer getId(){
return id;
}
 
public void setType(String type){
this.type = type;
}
 
public String getType(){
return type;
}
 
public void setName(String name){
this.name = name;
}
 
public String getName(){
return name;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
package com.maps;
 
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
 
public class MainUser{
 
public static void main(String[] args){
List<User> list = getUserList();
Map<String,List<User>> userGroupMap = list.stream().collect(Collectors.groupingBy(User::getType));
}
 
 
public static List<User> getUserList(){
User user1 = new User(1,"张三","小学");
User user2 = new User(2,"李四","小学");
User user3 = new User(3,"王五","初中");
User user4 = new User(4,"马六","高中");
 
List<User> list = new ArrayList<User>();
list.add(user1);
list.add(user2);
list.add(user3);
list.add(user4);
 
return list;
}
}

运行上面例子得到下面的结果

1
{高中=[com.maps.User@ 448139f0], 初中=[com.maps.User@7cca494b], 小学=[com.maps.User@7ba
相关文章
|
5天前
|
安全 Java 大数据
|
4天前
|
Java 编译器 API
Java基础教程(17)-Java8中的lambda表达式和Stream、Optional
【4月更文挑战第17天】Lambda表达式是Java 8引入的函数式编程特性,允许函数作为参数或返回值。它有简洁的语法:`(parameters) -> expression 或 (parameters) ->{ statements; }`。FunctionalInterface注解用于标记单方法接口,可以用Lambda替换。
|
5天前
|
存储 SQL Java
JavaSE&Java8 Stream
JavaSE&Java8 Stream
|
6天前
|
存储 设计模式 算法
Java从入门到精通:2.1.1深入学习Java核心技术——掌握Java集合框架
Java从入门到精通:2.1.1深入学习Java核心技术——掌握Java集合框架
|
6天前
|
存储 Java C++
Java集合篇之深度解析Queue,单端队列、双端队列、优先级队列、阻塞队列
Java集合篇之深度解析Queue,单端队列、双端队列、优先级队列、阻塞队列
17 0
|
10天前
|
存储 安全 算法
Java基础教程(11)-Java中的集合类
【4月更文挑战第11天】Java集合框架核心是Collection和Map接口,其中Collection分为List和Set,常用实现有ArrayList、LinkedList、HashSet和TreeSet。Map接口实现如HashMap和Hashtable,提供键值对存储。面试常问的HashMap与Hashtable差异在于线程安全、继承关系、null值接受及扩容策略。遍历集合通常使用Iterator,也可用for-each循环。Hash涉及数据压缩映射,用于快速查找,存在碰撞可能性。
|
1月前
|
存储 安全 Java
java集合框架及其特点(List、Set、Queue、Map)
java集合框架及其特点(List、Set、Queue、Map)
|
28天前
|
Java
Java使用List去重的四中方式
Java使用List去重的四中方式
19 6
|
1月前
|
Java
JAVA——List中剔除空元素(null)的三种方法汇总
JAVA——List中剔除空元素(null)的三种方法汇总
|
1月前
|
安全 Java API
Java并发 - J.U.C并发容器类 list、set、queue
Queue API 阻塞是通过 condition 来实现的,可参考 Java 并发 - Lock 接口 ArrayBlockingQueue 阻塞 LinkedBlockingQueue 阻塞 ArrayQueue 非阻塞 LinkedQueue 非阻塞