排序ArrayList - JAVA [重复]

Posted

技术标签:

【中文标题】排序ArrayList - JAVA [重复]【英文标题】:Sorting ArrayList - JAVA [duplicate] 【发布时间】:2021-11-04 22:08:03 【问题描述】:

我有一个 csv 文件,其中包括 3 列(姓名、性别、年龄),而且它是不规则的(未排序)。我创建了一个名为“Person”的类,并通过 Person 对象将 csv 文件的每一列添加到 Araylist 中。之后我想对这个列表进行排序,但它没有排序。该列表与 csv 文件相同。我希望排序的代码如下。您能否检查一下为什么这段代码没有根据年龄对我的列表进行排序。

Comparator<Person> comparator = new Comparator<Person>() 
            
@Override
        
public int compare(Person first, Person second) 
                if (first.age < second.age) 
                    return first.age;
                 else 
                    return second.age;
                
            
        ;
        Collections.sort(myList, comparator);
    enter code here

亲切的问候。

【问题讨论】:

按照 javadocs 比较它的两个参数的顺序。返回负整数、零或正整数,因为第一个参数小于、等于或大于第二个。 您需要返回 Integer.compare(first.age, second.age) 之类的内容,或者直接返回 first.age - second.age。正如可怕的袋熊指出的那样,您需要阅读 Comparator 上的 Javadoc。 你能举个例子,你得到的结果是什么? 【参考方案1】:

删除 if else 条件。

    Comparator<Person> comparator = new Comparator<Person>() 
        @Override
        public int compare(Person first, Person second) 
            return first.getAge() - second.getAge();
        
    ;
    Collections.sort(persons, comparator);

Java 8

Collections.sort(persons, Comparator.comparingInt(Person::getAge));

【讨论】:

非常感谢 Subha Chandra ;当您输入我的最终和可运行代码时: Comparator compare = new Comparator() @Override public int compare(Person first, Person second) return first.Age- second.Age; ; Collections.sort(myList,comarator);【参考方案2】:
myList.sort(Comparator.comparingInt(Person::getAge));

根据 Java 文档,

Comparator#compare

返回: 作为第一个参数的负整数、零或正整数小于、等于或大于第二个参数。

【讨论】:

以上是关于排序ArrayList - JAVA [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在Java中对ArrayList进行排序[重复]

如何制作Java ArrayList的深层副本[重复]

在Java中对ArrayList<List>进行排序[重复]

如何根据GPA对数组列表进行升序排序? arraylist 包含一个对象数组。 (Java)[重复]

java中ArrayList排序

使用java8的排序列表[重复]