1、筛选集合,将符合条件的结果,进行排序后返回成新的集合
//从数据库中读取数据
List<Alarmrule> alarmrules = alarmruleService.list();
//c代表被过滤的集合(也就是alarmrules)中的元素
List<Alarmrule> rules = alarmrules.stream().filter(c -> c.getFactorid() == "12")
//Comparator.comparing代表将过滤后的数据按照sort排序,Collectors.toList()代表将结果收集为list类型后返回。
.sorted(Comparator.comparing(Alarmrule::getSort)).collect(Collectors.toList());
2、JSON数据转换成对应的实体类(前提是字段能够匹配):
实体类名 entity = JSONUtil.toBean(数据.toString(),实体类名.class);
3、lambda表达式分组功能,根据age进行分组:
Map<String, List> listMap = contentMap.stream().collect(Collectors.groupingBy(e -> e.get(“age”).toString()));
有对应实体类的话就可以这么写:Collectors.groupingBy(entity::getAge)
4、实体类复制,oldEntity是原来的,newEntity是复制后的实体类对象。(匹配不上的字段会自动忽略):
BeanUtils.copyProperties(oldEntity,newEntity);
5、排序
List<Map> list = list .stream().sorted(Comparator.comparing((Map e)-> Double.valueOf(e.get("limitvalue").toString())).reversed()).collect(Collectors.toList()); ps:sorted为排序,reversed为倒序。
6、stream的几个方法:
stream是将数组转成流,可以理解为遍历数组,比如List<Map> list。list.stream().filter(e->e.get("")):这里的e就是list数组中的元素map
filter:过滤流中的某些元素
limit(n):获取n个元素
skip(n):跳过n元素,配合limit(n)可实现分页
distinct:通过流中元素的 hashCode() 和 equals() 去除重复元素
map(e->e.get("name")):将List中的元素:每个map中的name单独取出组成新的List
7、list的一些方法
Collections.min(list):取出list中最小元素
list.contains("lisa"):判断list中是否包含lisa
8、java8去重
List<Map>:里面是map或者是实体类时,根据map或实体类的某个键进行去重,先根据这个键分组,再取出第一个元素重组一个list即可: //将突发工单按照工单id进行分组 List<entity> workBurstOrders = new ArrayList<>; Map<Long,List<entity>> workGroupBy = workBurstOrders.stream().collect(Collectors.groupingBy(entity::getName)); //将分组后的map的值取出第一个元素转为新的list集合 List<entity> newList = workGroupBy.values().stream().map(e->e.get(0)).collect(Collectors.toList());