一、概述
JDK1.8新增加流接口:java.util.stream.Stream。
所有集合Collection都可以使用 stream的默认方法获取流;获取数组对应的流,可以使用Stream接口的静态方法of。
二、Stream流的常用方法:filter、map、forEach、count、skip、limit、concat、sorted
java
@Test
public void contextLoads() {
List<User> list = buildUserList();
//list.forEach(System.out::println);
//用map:把流中的元素映射到另一个流中,返回一个新的列表
List<String> idList = list.stream().map(user -> {return user.getId();}).collect(Collectors.toList());
System.out.println(JSON.toJSONString(idList));
List<String> nameList = list.stream().map(user -> {return user.getName();}).collect(Collectors.toList());
System.out.println(JSON.toJSONString(nameList));
//过滤:filter,根据返回Boolean决定返回结果,返回一个新的列表
List<User> uList = list.stream().filter(user -> user.getId().startsWith("A01")).collect(Collectors.toList());
System.out.println(JSON.toJSONString(uList));
//分页操作,从第2页开始取2条数据
uList = list.stream().skip(1*2).limit(2).collect(Collectors.toList());
System.out.println("分页::"+JSON.toJSONString(uList));
//升序
List<User> user_list = list.stream().sorted(Comparator.comparing(User::getId)).collect(Collectors.toList());
System.out.println("升序排序::"+JSON.toJSONString(user_list));
//降序
user_list = list.stream().sorted(Comparator.comparing(User::getId).reversed()).collect(Collectors.toList());
System.out.println("降序排序::"+JSON.toJSONString(user_list));
//统计集合元素总数
long count = list.stream().count();
System.out.println("集合总数::"+count);
//两个集合合并
List<String> id_name_list=Stream.concat(idList.stream(),nameList.stream()).collect(Collectors.toList());
System.out.println("列表合并::"+JSON.toJSONString(id_name_list));
}
private List<User> buildUserList(){
List<User> list = new ArrayList<>();
User user = null;
for (int i=10;i<30;i++) {
user = new User();
user.setId("A0"+i);
user.setName("ABD"+ LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
list.add(user);
}
return list;
}