java - 如何使用 Object 参数对 Arraylist 中的对象进行排序

标签 java sorting object arraylist

我在对 Arraylist 中的对象进行排序时遇到问题,因为我是排序对象的新手。

对数组列表进行排序是非常基本的,但是对对象数组列表进行排序是完全不同的事情。基本上我一直在检查堆栈溢出中的代码,人们似乎使用比较器来解决他们的问题,但他们没有解释如何实际调用该方法并将其投入使用,这就是我来这里的原因。

使用下面的代码,我尝试使用参数对学生数组列表进行排序 - 字符串名称、整数年龄和字符串类(class)。然后我有另一个类来存储学生对象并在类中对它们进行排序。这是我所拥有的:

Student.java

public class Student {

    private String name, course;
    private int age;

    public Student(String name, int age, String course) {
        this.name = name;
        this.age = age;
        this.course = course;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public String getCourse() {
        return course;
    }
}

CompareObj.java

import java.util.*;

public class CompareObj implements Comparator<Student>{

    private ArrayList<Student> sList;

    public CompareObj() {
        sList = new ArrayList<Student>();
    }

    @Override
    public int compare(Student s1, Student s2) {
         return s2.getName().compareTo(s1.getName());
    }

    public void add(Student s1) {
        sList.add(s1);
    }

    public void displayList() {
        for(int i = 0; i<sList.size();i++) {
            System.out.println(sList.get(i).getName());
        }
    }
}

在 CompareObj 类中,如何使用已实现的方法 compare(s1,s2),如何使用此方法对学生对象的数组列表进行排序?

最佳答案

how can i use this method to sort my arraylist of student objects?

您不需要自己调用compare()。您可以将比较器传递给 Collections.sort(),它会通过调用 compare() 方法为您进行排序。


通过使用自定义类 CompareObj,

Collections.sort(studentList, new CompareObj());

或者没有 CompareObj 的另一种方式是,

Collections.sort(studentList,new Comparator<Student>() {
         @Override
        public int compare(Student s1, Student s2) {
                return s1.getName().compareToIgnoreCase(s2.getName());
        }
    });

关于java - 如何使用 Object 参数对 Arraylist 中的对象进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25311557/

相关文章:

algorithm - 对知道邻居的节点进行排序,但不知道他们在哪一边

java - 用整数对二维字符串数组进行排序

javascript - 使用多维数据展平 javascript 数组

jquery - 随机化 svg 笔划的颜色

java - 如何让JOptionPane计算面积?

java - 如何在 Android 应用程序中为金融交易生成最多 10 个字符的唯一引用 ID?

java - 交替任命

c# - 以某种方式排序的日期列表

actionscript-3 - 获取 Actionscript-3 中对象的 "key"

java - J2EE - 实现持续运行的组件/守护进程