当前位置: 首页 > 知识库问答 >
问题:

在Java中使用comparator对list的包装类强制排序(而不是排序)

姜煌
2023-03-14

我希望能够使用PersonCollection类比较Person对象,这意味着,我不希望Person类实现可比接口,我希望PersonCollection实现比较器接口。

我做那件事有困难。我已经实现了compare方法,但当我比较Person对象时,它仍然不起作用。

例如,这段代码给了我一个错误(people是ArrayList

public void insert (Person p){
    for(int i = 0; i < people.size(); i++){
        if (people.get(i) > p){
            //Do something
        }
    }
} 

我知道如何使用比较器进行排序,这是不同的。我完全知道其他可能的,也许更好的解决方案(任何优先级队列类或某种sortedset类)

出于特定的原因,我希望为ArrayList这样做,我恳请您将您的解决方案建立在此基础上,而不是建议使用其他数据结构。

共有1个答案

周宏伯
2023-03-14

您可以编写自定义的比较器并使用compare(a,b)方法。

https://docs.oracle.com/javase/8/docs/api/java/util/comparator.html#compare-t-t-

您的代码看起来像

if (myComparator.compare(people.get(i), p) > 0 ) {
 类似资料:
  • 问题内容: 我学会了如何使用可比对象,但是在使用比较器时遇到了困难。我的代码有错误: 这是我的代码: 我相信它必须与比较方法中的转换有关,但我一直在玩,但仍然找不到解决方案 问题答案: 你的示例类有几件尴尬的事情: 它有个和时称为人(更多用于对象,而不是人); 当将一个类命名为某个事物的复数形式时,这表明它是对多个事物的抽象。 无论如何,这是如何使用的演示: 编辑 等效的Java 8演示如下所示:

  • 问题内容: 我有一个浮点数组和一个字符串数组。每个浮点值都与特定的String匹配。我想使用以下方式对保留自己的字符串的float数组进行排序: 这是代码: 如何排序并保留自己的字符串? 非常感谢。 问题答案:

  • 我正在使用一个列表 我的代码如下-

  • 我正在初始化一个优先级队列,如下所示: 我的比较器类的代码是: 运行模拟后,元素根本没有排序——它们是随机的;我在我的FuelPriority类的compare方法中设置了一个断点,但它根本没有被调用。我错过什么了吗?

  • 我使用Java Comparator按照单词频率属性的降序对单词对象的ArrayList进行排序。Word对象是通过首先使用hashmap从数据库中读取单词来创建的。txt文件,然后将hashmap转换为Word对象的ArrayList。然后我想按字母顺序对频率相同的单词进行排序。

  • 本文向大家介绍JAVA对list集合进行排序Collections.sort(),包括了JAVA对list集合进行排序Collections.sort()的使用技巧和注意事项,需要的朋友参考一下 对一个集合中的对象进行排序,根据对象的某个指标的大小进行升序或降序排序。代码如下: 进行降序排列 进行升序排列 经过测试发现,只需要把两个对象的位置调换一下即可升序或降序。 如果指标相同,根据多个指标进行