排序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 ;当您输入我的最终和可运行代码时: ComparatormyList.sort(Comparator.comparingInt(Person::getAge));
根据 Java 文档,
Comparator#compare
返回: 作为第一个参数的负整数、零或正整数小于、等于或大于第二个参数。
【讨论】:
以上是关于排序ArrayList - JAVA [重复]的主要内容,如果未能解决你的问题,请参考以下文章
在Java中对ArrayList<List>进行排序[重复]