记录一下工作中常用的java8 stream用法。
package com.example.demo.test;
import com.alibaba.fastjson.JSONArray;
import com.example.demo.beans.entity.TMybatis;
import net.minidev.json.JSONUtil;
import java.util.*;
import java.util.stream.Collectors;
public class StreamTest {
public static void main(String[] args) throws Exception{
List<TMybatis> mybatis = new ArrayList<>();
for(int i=0;i<10;i++){
TMybatis tMybatis = new TMybatis();
tMybatis.setObjid(i+1);
if(i%2 == 0){
tMybatis.setRemoveTag(1);
}
else {
tMybatis.setRemoveTag(0);
}
mybatis.add(tMybatis);
}
//求和
int add = mybatis.stream().collect(Collectors.summingInt(TMybatis::getObjid));
int add1 = mybatis.stream().collect(Collectors.summingInt(t -> {
return t.getObjid() + 1;
}));
System.out.println(add+","+add1);
//分组
Map<Integer,List<TMybatis>> groupBy = mybatis.stream().collect(Collectors.groupingBy(TMybatis::getRemoveTag));
//List转Map,toMap 如果集合对象有重复的key,会报错Duplicate key ....可以用 (k1,k2)->k1 来设置,如果有重复的key,则保留key1,舍弃key2
Map<Integer,TMybatis> listToMap = mybatis.stream().collect(Collectors.toMap(TMybatis::getObjid,m->m,(k1,k2)->k1));
Map<Integer,Integer> listToMap1 = mybatis.stream().collect(Collectors.toMap(TMybatis::getObjid,TMybatis::getRemoveTag));
//过滤
List<TMybatis> mybatisNew = mybatis.stream().filter(item -> item.getRemoveTag()==1).collect(Collectors.toList());
List<TMybatis> mybatisNew1 = mybatis.stream().filter(item -> {
return item.getRemoveTag() == 0;
}).collect(Collectors.toList());
//提取某个字段
List<Integer> objids = mybatis.stream().map(TMybatis::getObjid).collect(Collectors.toList());
List<Integer> objids1 = mybatis.stream().map(item -> item.getObjid()+item.getRemoveTag()).collect(Collectors.toList());
System.out.println(objids);
//排序
List<TMybatis> mybatisNew2 = mybatis.stream().sorted(Comparator.comparing(TMybatis::getObjid).reversed().
thenComparing(TMybatis::getRemoveTag)).collect(Collectors.toList());
List<TMybatis> mybatisNew3 = mybatis.stream().sorted((o1,o2) -> {
return o1.getObjid().compareTo(o2.getObjid());
}).collect(Collectors.toList());
JSONArray array = new JSONArray(Collections.singletonList(mybatisNew2));
System.out.println(array.toJSONString());
//分页
List<TMybatis> mybatisNew4 = mybatis.stream().skip(2).limit(3).collect(Collectors.toList());
array = new JSONArray(Collections.singletonList(mybatisNew4));
System.out.println(array.toJSONString());
//拼接
String join = mybatis.stream().map(t -> {
return t.getObjid().toString();
}).collect(Collectors.joining(","));
System.out.println(join);
//任一匹配
boolean anyMatch = mybatis.stream().anyMatch(t -> t.getObjid() == 1);
System.out.println(anyMatch);
}
}