对list集合里的类json对象的某个属性进行排序
2020-07-13 06:09
501 查看
题目:
List list = Arrays.asList(new String[]{“1,张三,50”, “2,李四,80”, “3,王五,40”, “4,张三,90”, “5,王五,70”});
要求:
1.统计列表里的平均分
2.按照平均分进行升序排序
输出结果:
代码:
package com.xu.test; import java.util.Arrays; import java.util.HashMap; import java.util.List; public class test { public static void main(String[] args) { List<String> list = Arrays.asList(new String[]{"1,张三,50", "2,李四,80", "3,王五,40", "4,张三,90", "5,王五,70"}); HashMap<String,Double> h1 = new HashMap<>(); //分数 HashMap<String,Integer> h2 = new HashMap<>(); //次数 list.forEach(s->{ String[] split = s.split(","); if(h1.containsKey(split[1])){ h1.put(split[1],h1.get(split[1])+ Double.valueOf(split[2])); h2.put(split[1],h2.get(split[1])+1); }else{ h1.put(split[1],Double.valueOf(split[2])); h2.put(split[1],1); } }); h1.forEach((key,value)->{ if(h2.get(key)>1){ Double avg_score = h1.get(key)/h2.get(key); h1.put(key,avg_score); } }); //成绩升序 使用了e1.compareTo(e2) e1-e2 >0 则e1比e2大,所以e1往后放 h1.entrySet().stream().sorted((e1,e2)-> e1.getValue().compareTo(e2.getValue())).forEach(v1 -> { System.out.println(v1.getKey() +" " + v1.getValue()); }); //成绩降序 // h1.entrySet().stream().sorted((e1,e2)-> e2.getValue().compareTo(e1.getValue())).forEach(v1 -> { // System.out.println(v1.getKey() +" " + v1.getValue()); // }); } }
相关文章推荐
- 对List集合中的对象进行按某个属性排序
- 如何根据对象的属性,对集合(list / set)中的对象进行排序
- 对list集合中的POJO对象某个属性进行排序(String或者数值)
- 如何根据对象的属性,对集合(list / set)中的对象进行排序
- C#中对List<Object>泛型集合,根据对象的某一属性进行升序排序
- 对list集合中的对象按照对象的某一属性进行排序
- List集合中删除属性(一个或者多个属性)相同的对象返回List且根据对象属性进行排序输出
- list集合根据对象属性去重以及根据对象某个属性逆序排序,相同则使用另一个进行排序
- 如何对List集合中的对象进行按某个属性排序
- 对List中对象属性进行排序
- web开发中如何对json对象的某一属性对其进行排序
- 重写Compare方法对集合以指定对象的属性进行排序
- List根据里面的对象属性的值进行排序
- java list按照元素对象的指定多个字段属性进行排序
- list集合根据对象属性排序举例
- 根据集合中对象属性值大小进行排序
- C# List按照对象属性进行排序
- List集合中的对象根据属性排序
- java list按照元素对象的指定多个字段属性进行排序
- List集合中的对象根据属性排序