去重 distinct() 去重;collect(())。封装成集合
List<Person> distinctList = ().distinct().collect(());
collectingAndThen去重(根据对象里面的某个字段进行去重)
List<ProductReq> paperRecordList = ().collect( ( (() -> new TreeSet<>((ProductReq::getProductFullName))), ArrayList::new));
collectingAndThen去重(根据对象里面的多个字段进行去重)
ArrayList<ProductReq> paperRecordList = ().collect( ( (() -> new TreeSet<>((item->()+"_"+()))), ArrayList::new));
去重
去重取旧对象:
List<ProductReq> paperRecordList = new ArrayList<>(().collect((ProductReq :: getProductFullName, (), (oldValue, newValue) -> oldValue)).values());
排序 ?sorted((第一个对象,第二个对象)->返回值) ?(升降序看是第几个对象与第几个对象比较)
List<Person> sortedList = ().sorted((o1,o2)->()-()).collect(());
//按照年龄升序
().sorted((Student::getAge))
//按照年龄降序
().sorted((Student::getAge).reversed())
排序空字段排在前面
().sorted((l -> (), (Date::compareTo))).collect(toList());
排序空字段排在后面
().sorted((l -> (), (String::compareTo))).collect(toList());
按年龄排序(Integer类型)
List<StudentInfo> studentsSortName = ().sorted((StudentInfo::getAge)).collect(());
排序,按日期倒叙,null日期排在最后((::getTermOfOfficeStartDate, (())));
过滤 , filter(item->{}) ? item为每一项。 按照自己的需求来筛选list中的数据
List<Person> filterList = ().filter(item->()>3).collect(());
map(), 提取对象中的某一元素. ?用每一项来获得属性(也可以直接用 ?对象::get属性())
List<String> mapList1 = ().map(Person::getName).collect(());
List<String> mapList2 = ().map(item->()).collect(());
统计 sum() 。mapToDouble() 转换成double。还有其他类型转换。可以自己研究。
double sum = ().mapToDouble(Person::getAge).sum();
().mapToDouble(User::getHeight).sum()//和
().mapToDouble(User::getHeight).max()//最大
().mapToDouble(User::getHeight).min()//最小
().mapToDouble(User::getHeight).average()//平均值
BigDecimal quitMoney = ().filter(item -> () == 1).map(SelectListByCustomerIdRsp::getTradeMoney).reduce(, BigDecimal::add).setScale(2, RoundingMode.HALF_UP);
分组 ? (属性名)
Map<Integer, List<Person>> map = ().collect((Person::getAge));
多重分组 (属性,(属性))
Map<String, Map<Integer, List<Person>>> map2 = ().collect((t->(),(t->())));
分组并计算综合 ? ()
Map<String, Map<Integer, LongSummaryStatistics>> map3 = ().collect((t->(),(t->(),(Person::getSize))));
将list转你为map
Map<String, Person> collect = ().collect((Person::getName, (p) -> p));
集合比较的简写方式
((o1,o2)->{return ()-();});
根据筛选条件对list进行过滤
List<ContractVO> filterList = ().filter(item->
{
boolean flag =true;
if((())){
flag = ().equals(());
}
String dept = null == () ? "" : ();
if ((())){
flag = (())&&flag;
}
String manager = null == () ? "" : ();
if ((())){
flag = (())&&flag;
}
BigDecimal balance = null == () ? :();
if (null != ()){
flag = (())>=0&&flag;
}
if (null != ()){
flag = (())<=0&&flag;
}
int invalidDays = null == () ? 0 : ();
if (null != ()){
flag = invalidDays>=()&&flag;
}
if (null != ()){
flag = invalidDays<=()&&flag;
}
return flag;
}
).collect(());
}
计算求和
().map(vo -> (()) ? new BigDecimal(0) : ()).reduce(, BigDecimal::add);
String转List<Long>
((",")).map(s -> (())).collect(());
字符转转集合同时进行数据类型转换
List<Long> strings = ((",")).map(Long::parseLong).collect(());