java根据成绩排名 相同成绩同名次

/**
 * 排序:把不同成绩保存map中,最后实体类根据map的key找到排名 存入实体排名里面,前端取值。
 * @return
 */
public static Map rankScore(List stus) {
    Map map = new HashMap<>();
    List>> list = stus.stream().collect(Collectors.groupingBy(DeductPersonVO::getDeductScore)).entrySet()
            .stream().sorted((s1, s2) -> -Double.compare(s1.getKey(), s2.getKey())).collect(Collectors.toList());
    int index = 1;
    for (Map.Entry> entry : list) {

        map.put(entry.getKey(),index);
        entry.getValue().forEach((s) -> System.out.print("  " + s.getDeductScore()));
        System.out.println();
        index++;
    }
    return map;
}

取值存入实体

Map rankMap2 = rankScore(personList);
personList.stream().forEach(bean -> {
    bean.setRank(rankMap2.get(bean.getDeductScore()));
});

 

你可能感兴趣的:(后端,java)