当前位置: 首页 > 面试题库 >

如何在Java中对名称和年龄进行排序

司空思聪
2023-03-14
问题内容

我是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,您可以使用方法引用和链接的比较器,如下所示:

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

这将Person首先按它们的实例比较两个实例fname,如果相等,则按它们的实例进行比较age(略微优化thenComparingInt以避免装箱)。



 类似资料:
  • 问题内容: 我有一堂水果课。我正在创建此类的列表,并将每个水果添加到列表中。我想根据水果名称的顺序对该列表进行排序。 我正在使用for循环创建它的列表 我需要使用列表中每个对象的水果名称对该arrayList进行排序 问题答案: 使用这样的: 现在,你的水果清单将基于进行排序。

  • 问题内容: 我们如何排序? 我想根据中的值进行排序。 问题答案: 你是否必须使用HashMap?如果只需要Map Interface,请使用TreeMap 如果要通过比较HashMap中的值进行排序。你必须编写代码才能执行此操作,如果要执行此操作,则可以对HashMap的值进行排序: 如果你想经常访问此排序列表,则可以将元素插入到中,尽管集合和列表的语义有些不同。

  • 问题内容: 我不能在数据库中执行ORDER BY 问题答案: 将数据从ResultSet中移到所需的任何对象表示形式中,然后对数据进行排序,就像此时的其他任何数据一样。 如果您使用Collections.Sort对复杂对象进行排序,则需要实现Comparator。

  • 问题内容: 如何按对象的字段对对象的JSONArray排序? 输入: 所需的输出(按“名称”字段排序): 问题答案: 试试这个: 排序后的JSONArray现在存储在对象中。

  • 基本上可以通过以下方式进行排序: collections.sort(列表); 这里的问题是,一旦我添加了traders arraylist中的所有值,我需要排序并显示为输出。我尝试使用collections.sort(),但它显示编译器异常。

  • 问题内容: 我已经寻找了一段时间,想要一种对JSON对象进行排序的方法,如下所示: 并按字母顺序按值“ COMMERCIALNAME_E”得到: 我找不到任何可以做到这一点的代码。谁能给我些帮助? 问题答案: 将这些JSON解析为“对象集合”,然后使用比较器通过您喜欢的字段对其进行排序。 使用GSON将其解析为对象集合 例: 如果要从Object创建JSON。