list几种求和方式:
1、list.stream().mapToInt(Entity::getField).sum();//Integer类型求和
2、list.stream().mapToDouble(Entity::getField).sum();//Double类型求和
//计算 总金额(类似四舍五入)
BigDecimal totalMoney = appleList.stream().map(Apple::getMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
System.err.println(“totalMoney:”+totalMoney); //totalMoney:17.48
3、 list.stream().mapToLong(Entity::getField).sum();//Long类型求和
取出list中某一字段(fileld)的值并转化成list
List fieldList=list.stream().map(Entity::getField).collect(Collectors.toList());
//如需涉及将list转化成数组
String[] array= fieldList.toArray(new String[fieldList.size()]);
过滤list取出符合的数据
1、判断数值型(1、2、3)
List newList= list.stream().filter(Entity-> Entity.getField() == 数值).collect(Collectors.toList());
2、判断时间类的字符串(其它字符串同理)
List newList = list.stream().filter(Entity->sdf.format(Entity.getTime()).equals(“比较的字符 串”)).collect(Collectors.toList());
3、多条件筛选
List newList= list.stream().filter(Entity-> Entity.getStaffNumber().equals(staffNumber) && Entity.getSaltDto().getChineseNameStr().equals(chineseName)&&Entity.getSaltDto().getIdCardStr().equals(idCard)).collect(Collectors.toList());
对list分组的俩种方式
1、分组后带实体
Map<String, List> map = list.stream().collect(Collectors.groupingBy(Entity::getField));
System.err.println(“map :”+map );
{1=[Apple{id=1, name=‘苹果1’, money=3.25, num=10}, Apple{id=1, name=‘苹果2’, money=1.35, num=20}], 2=[Apple{id=2, name=‘香蕉’, money=2.89, num=30}], 3=[Apple{id=3, name=‘荔枝’, money=9.99, num=40}]}
2、另一种
Map<String, List> map = list.stream().collect(Collectors.groupingBy(Entity::getField,Collectors.mapping(Entity::getField, Collectors.toList())));
//如需对map进行操作
for(String key : map.keySet()){
String field= map.get(key).get(0);
}
3、多种属性就行分组(我这里是根据企业名称和时间):
Map<String, Map<Date, List<TbRemindDto>>> map = newList.stream().collect(Collectors.groupingBy(TbRemindDto::getCompanyName, Collectors.groupingBy(TbRemindDto::getEndTime)));
map.forEach((key,value)->{
//System.out.println("外键"+key+"外部值"+value);
value.forEach((key2,value2)->{
String staffStr = "";
for (TbRemindDto remindDto : value2) {
staffStr+=remindDto.getStaffName()+"、";
}
String companyName = value2.get(0).getCompanyName();
String endTimeStr = DateUtils.format(value2.get(0).getEndTime(), "yyyy-MM-dd");
staffStr = staffStr.substring(0,staffStr.length()-1);
//System.out.println("内键"+key2+"内部值"+value2);
EMailUtil.sendNoticeInfoRelatedPersonnel(staffEmail, 6, companyName, endTimeStr,staffStr);
});
});
对list排序
正序
list.sort(Comparator.comparingDouble(Entity::getField);
倒序
list.sort(Comparator.comparingDouble(Entity::getField).reversed());
这些是我最近用到的,如有更好的欢迎一起进步!!!