java 排序

image.png
根据likedCount进行降序排序,截取前十条

阅读 1.6k
2 个回答

根据你的demo模拟了一段代码
1.dto类

import lombok.Data;

/**
 * @description:
 * @class: InfoDTO
 * @author: Yiang37
 * @date: 2022/1/7 9:21
 * @version: 1.0
 */
@Data
public class InfoDTO {
    private String name;
    private int age;
}

2.排序类

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;

import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;

/**
 * @description:
 * @class: Parse
 * @author: Yiang37
 * @date: 2022/1/7 9:21
 * @version: 1.0
 */
public class Parse {

    public static void main(String[] args) {

        String in = "[{\"name\":\"yang\",\"age\":120},{\"name\":\"wang\",\"age\":3},{\"name\":\"zhao\",\"age\":16},{\"name\":\"qian\",\"age\":18},{\"name\":\"sun\",\"age\":25},{\"name\":\"li\",\"age\":19},{\"name\":\"feng\",\"age\":10}]";

        // 解析json
        List<InfoDTO> infoDTOList = JSON.parseObject(in, new TypeReference<List<InfoDTO>>() {
        });

        // 源数据
        infoDTOList.forEach(e -> System.out.println(e.getAge() + " - " + e.getName()));
        System.out.println("-----------------------------------");

        // 排序
        List<InfoDTO> collect = infoDTOList.stream().sorted(Comparator.comparing(InfoDTO::getAge)).collect(Collectors.toList());
        collect.forEach(e -> System.out.println(e.getAge() + " - " + e.getName()));
        System.out.println("-----------------------------------");

        // 排序 反转
        List<InfoDTO> collect2 = infoDTOList.stream().sorted(Comparator.comparing(InfoDTO::getAge).reversed()).collect(Collectors.toList());
        collect2.forEach(e -> System.out.println(e.getAge() + " - " + e.getName()));
        System.out.println("-----------------------------------");

        // 截取
        List<InfoDTO> resList = collect.subList(0, 3);
        resList.forEach(e -> System.out.println(e.getAge() + " - " + e.getName()));
    }
}

3.程序输出

120 - yang
3 - wang
16 - zhao
18 - qian
25 - sun
19 - li
10 - feng
-----------------------------------
3 - wang
10 - feng
16 - zhao
18 - qian
19 - li
25 - sun
120 - yang
-----------------------------------
120 - yang
25 - sun
19 - li
18 - qian
16 - zhao
10 - feng
3 - wang
-----------------------------------
3 - wang
10 - feng
16 - zhao

如果是Java排序就对象实现Comparable 利用compareTo进行降序,截取前十条直接用subList取前十条就行了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题