gpt4 book ai didi

java - 如何在java中对名字和年龄进行排序

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:05:39 27 4
gpt4 key购买 nike

我是 Java 8 的新手。我只想按名称排序。但条件是:如果有重名则按年龄排序。

例如我的输入是

tarun  28
arun 29
varun 12
arun 22

输出应该是

arun   22
arun 29
tarun 28
varun 12

但是我得到了类似的东西

varun  12
arun 22
tarun 28
arun 29

表示它仅按年龄或姓名排序。

这是实现的代码:

POJO 类:

class Person {

String fname;

int age;

public Person() {
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

public String getFname() {
return fname;
}

public void setFname(String fname) {
this.fname = fname;
}

public Person(String fname, int age) {
this.fname = fname;

this.age = age;
}

@Override
public String toString() {
return fname + age;
}
}

测试类:

public class Test {

public static void main(String[] args) {
List<Person> persons = new ArrayList<>();
persons.add(new Person("tarun", 28));
persons.add(new Person("arun", 29));
persons.add(new Person("varun", 12));
persons.add(new Person("arun", 22));

Collections.sort(persons, new Comparator<Person>() {

@Override
public int compare(Person t, Person t1) {
return t.getAge() - t1.getAge();
}
});
System.out.println(persons);

}
}

最佳答案

目前您 a) 仅通过一个属性进行比较,b) 并未真正利用 Java 8 的新功能。

对于 Java 8,您可以使用 method references和链式比较器,像这样:

Collections.sort(persons, Comparator.comparing(Person::getFname)
.thenComparingInt(Person::getAge));

这将比较两个 Person 实例,首先通过他们的 fname 和 - 如果相等 - 通过他们的 age (略微优化thenComparingInt 以避免装箱)。

关于java - 如何在java中对名字和年龄进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45769908/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com