首页 > 其他分享 >对类的属性动态排序

对类的属性动态排序

时间:2024-07-21 19:40:26浏览次数:9  
标签:Comparable value1 return String 对类 value2 str 排序 属性

public static void sortByField(List<User> list, String fieldName) {
        list.sort((u1, u2) -> {
            try {
                Object value1 = User.class.getDeclaredMethod("get" + capitalize(fieldName)).invoke(u1);
                Object value2 = User.class.getDeclaredMethod("get" + capitalize(fieldName)).invoke(u2);
                if (value1 instanceof Comparable && value2 instanceof Comparable) {
                    return ((Comparable) value1).compareTo(value2);
                } else {
                    throw new IllegalArgumentException("Field value is not Comparable");
                }
            } catch (Exception e) {
                throw new RuntimeException("Error during sorting", e);
            }
        });
    }

    private static String capitalize(String str) {
        if (str == null || str.isEmpty()) {
            return str;
        }
        return str.substring(0, 1).toUpperCase() + str.substring(1);
    }

标签:Comparable,value1,return,String,对类,value2,str,排序,属性
From: https://www.cnblogs.com/yifan1028/p/18314869

相关文章

  • 快速排序和归并排序
    目录一、序言二、快速排序1.介绍2.思路3.代码实现三、归并排序1.介绍2.思路3.代码实现四、小结一、序言快速排序和归并排序是我认为很常用的两个排序,而很多人对此仍然存在一些疑问与不解,所以今天让我带大家重新回顾一下这两个排序的代码实现。二、快速排序1.......
  • Python第九章(面向对象基础--属性,继承,dir查看,内存地址,权限等等和银行账户题目,圆的面积
    面向对象创造对象示例代码:类的名字用小驼峰命名法#编写Person类classPerson():passclassCat:#,小括号可以省略pass#对象名=类名per=Person()c=Cat()#小括号不能省略print(type(per))print(type(c))代码结果:<class'__main__.Person'><class'__mai......
  • 指令重排序
    CPU内部结构图例CPU由多个功能部件构成在这个结构中,一条指令执行时,要依次用到多个功能部件,分成多个阶段,虽然每条指令是顺序执行的,但每个部件的工作完成以后,就可以服务于下一条指令,从而达到并行的效果这种结构叫做流水线(pipeline)结构流水线(pipeline)结构比如典型的......
  • 常见的排序算法——堆排序(四)
    本文记述了针对堆排序同时实施减少数据交换和Floyd方法的一份参考实现代码,并在说明了算法的性能后用随机数据进行了验证。◆思想减少数据交换的操作,请参考堆排序(二);Floyd方法,请参考堆排序(三)(此处略去详细说明)。◆实现排序代码采用《算法(第4版)》的“排序算法类模板”实现。(......
  • 常见的排序算法——堆排序(三)
    本文记述了针对堆排序实施Floyd方法的基本思想和一份参考实现代码,并在说明了算法的性能后用随机数据进行了验证。◆思想“大多数在下沉排序期间重新插入堆的元素会被直接加入到堆底。Floyd在1964年观察发现,我们正好可以通过免去检查元素是否到达正确位置来节省时间。”(引......
  • 从 Pandas 到 Polars 二十三:如果你的数据已经排序,Polars可以为你提供助力
    Polars针对处理已排序的数据进行了优化。要访问这些优化,你需要使用set_sorted标志告诉Polars数据已经排序。set_sorted主要用于以下两种情况:标记单个或多个列已排序:当你知道DataFrame的某个或某些列是按升序或降序排列时,你可以使用set_sorted来标记这些列。这将告诉P......
  • setattr 设置多级属性时似乎没有效果
    我正在为Ren'Py游戏编写一个mod,其中包含编辑游戏变量值的可能性(“作弊”)。游戏中的变量包括从简单布尔值到相当复杂的变量(例如simple_variable、obj.attr、obj.attr_a("some_id").attr_b)。这是我用来为变量/属性设置新值的函数(var_name是变量的字符串名称,new_val是我尝试设......
  • AttributeError:“协程”对象没有属性“get_me”
    我尝试在Jupyter笔记本中运行以下代码,但出现错误:AttributeError:'coroutine'对象没有属性'get_me'但它在VisualStudioCode上运行良好。知道为什么吗?这是代码:fromtelethonimportTelegramClient,syncapi_id=******api_hash='*********************......
  • 七大排序算法的Python实现
    七大排序算法的Python实现1.冒泡排序(BubbleSort)算法思想冒泡排序通过重复交换相邻的未按顺序排列的元素来排序数组。每次迭代都将最大的元素“冒泡”到数组的末尾。复杂度分析时间复杂度:O(n^2)空间复杂度:O(1)defbubble_sort(arr):n=len(arr)for......
  • 排序
    define_CRT_SECURE_NO_WARNINGS1include"mySort.h"voidmySort::printArr(vector&vec){for(constauto&i:vec){cout<<i<<"";}}voidmySort::BubbleSort(vector&vec){for(intj=vec.size()-1;j>=......