有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java对Arraylist对象进行排序

我有Arraylist

Arraylist<Class> arraylist = new Arraylist<>();

类包含不同的元素,如名称、年龄、卷号

我想对这个arraylist进行排序并使用

Collections.sort(arraylist);

还有一个错误,我如何在安卓 studio中使用卷号对这个arraylist进行排序


共 (2) 个答案

  1. # 1 楼答案

    在排序操作期间,需要一个Comparator<Class>来比较元素。一个例子是:

    class ClassComparator implements Comparator<Class> {
    
        @Override
        public int compare(Class c1, Class c2) {
            // write comparison logic here like below , it's just a sample
            return c1.name.compareTo(c2.name);
        }
    }
    

    然后将比较器用作

    Collections.sort(arraylist, new ClassComparator());
    



    做同样事情的另一种方法是在Class类中实现Comparable接口:

    class Class implements Comparable<Class> {
    
        public String name;
    
        @Override
        public int compareTo(Class o) {
            return name.compareTo(o.name);
        }
    }
    

    然后打电话:

    Collections.sort(arraylist);
    
  2. # 2 楼答案

    您可以使用lambda函数(Java8),它不需要您实现类似的类,而且工作做得很好

    一般语法:

    Collections.sort(students, (s1, s2) ->
            s1.getName().compareTo(s2.getName())); // for String values
    
    
    Collections.sort(students, (s1, s2) ->
            Integer.compare(s1.getRollNumber(), s2.getRollNumber())); // for Integral values
    

    ArrayList应该是:

    List<Student> students = new ArrayList<>();
    

    这是给全班同学的

    class Student{
        String name;
        int rollNumber;
    
        public String getName(){
            return name;
        }
    
        public int getRollNumber(){
            return rollNumber;
        }
    }