List集合中对对象中的某个属性进⾏分组、过滤或去重操作
List集合中对对象中的某个属性进⾏分组、过滤或去重操作
1、根据courseList对象中的userId属性进⾏分组查询
Map<String, List<Course>> collect = courseList.stream().upingBy(Course::getUserId));
2、根据courseList对象中的userId属性进⾏分组查询并对score属性进⾏汇总
Map<String, Double> collect = courseList.stream().upingBy(Course::getUserId,Collectors.summingDouble(Course::getScore)));
3、判断⼀组对象⾥⾯有没有属性值是某个值
List<User> userList = UserList();
boolean isExit= userList .stream().anyMatch(m ->"plan:ctPlan:add".Permission()));
filter过滤对象数组
4、取出⼀组对象的某个属性组成⼀个新集合
List<String> userNames=userList.stream().map(User::getUserName).List());
5、去除list中所有重复的数据
list = list.stream().distinct().List());
5、根据list中的某个属性添加条件过滤数据
list = list.stream().filter(u ->!u.getCourseName().equals("语⽂")).List());
5、对Map<Object, List>类型数据进⾏遍历
查了很多资料以后发现这种类型的例⼦少之⼜少,所以还是想分享⼀个实际的例⼦,⾸先获取数据列表
List<JSONObject> list = MemberMovement(jsonObject);
然后根据list中的某个属性进⾏分组,其中JSONObject是对象,registerChannel是对象的⼀个属性
Map<Object, List<JSONObject>> channelNameMap =
list.stream().upingBy(m ->(m.get("registerChannel").toString())));
再遍历map集合,拿到每⼀个List数组进⾏分别处理
for(Map.Entry<Object, List<JSONObject>> Set()){
List<JSONObject> memberMovementList = Value();
for(JSONObject object:memberMovementList){
......
}
}
对List中某个属性或某⼏个属性进⾏排序
//获取数据列表
List<JSONObject> resList = MemberMovement(jsonObject);
//对resList列表⾥的RR、Rank属性进⾏排序
resList.sort((o1, o2)->{
int cmp = o2.getDouble("RR")Double("RR"));
if(cmp ==0){
cmp = o1.getInteger("RANK")Integer("RANK"));
}
return cmp;
});

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。