Java对list集合中元素某个字段进行排序

     * 排序集合
     *
     * @param list    要排序的集合
     * @param orderBy 根据哪一个字段排序
     * @param sort    asc desc
     */
    public static <T> void sortedByParam(List<T> list, String orderBy, String sort) {
        if (StringUtils.isEmpty(orderBy)) {
            return;
        }
        // 1.获取指定字段的get方法名
        String methodName = "get" + orderBy.toUpperCase().substring(0, 1).toUpperCase() + orderBy.substring(1);

        list.sort((o1, o2) -> {
            int ret = 0;
            // 2.获取方法
            try {
                Comparable rs1 = (Comparable) MethodUtils.invokeMethod(o1, methodName);
                Comparable rs2 = (Comparable) MethodUtils.invokeMethod(o2, methodName);
                if (rs1 != null && rs2 != null) {
                    ret = "desc".equals(sort) ? rs2.compareTo(rs1) : rs1.compareTo(rs2);
                }
            } catch (ReflectiveOperationException e) {
                log.error("反射错误:sortedByParam-orderBy:[{}],sortedByParam-sort:[{}],orderSelect --> [{}],list-->[{}]", orderBy, sort, list, e);
                ret = 0;
            }
            return ret;
        });
    }```
posted @   码出新生活!  阅读(711)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· DeepSeek “源神”启动!「GitHub 热点速览」
· 上周热点回顾(2.17-2.23)

阅读目录(Content)

此页目录为空

点击右上角即可分享
微信分享提示