创建对象的列表/ arraylist并对列表进行排序(Java)

Mik*_*ike 3 java arrays arraylist object

可能重复:
根据名称对联系人的ArrayList进行排序?

我有一个学生对象,然后我创建了ArrayList并将学生添加到列表中.

ArrayList<Student_Object> studentsList = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)

现在,我想按studentId fleid对列表进行排序.我该怎么做?

有更好的解决方案吗?谢谢


所以我在Student _Object类中有这个方法

课程是:

class Student_Object implements Comparator<Student_Object>
Run Code Online (Sandbox Code Playgroud)

方法是:

public int compare(Student_Object student1, Student_Object student2){
    String student1TUID = student1.getTUID();        
    String student2TUID = student2.getTUID();

return student1TUID.compareTo(student2TUID);   


}
Run Code Online (Sandbox Code Playgroud)

我从哪里运行这个声明?

Collections.sort(studentsList);
Run Code Online (Sandbox Code Playgroud)

如果我从我的主类运行它我在netbeans中得到错误:

no suitable method found for sort(ArrayList<Student_Object>)
    method Collections.<T#1>sort(List<T#1>,Comparator<? super T#1>) is not applicable
      (cannot instantiate from arguments because actual and formal argument lists differ in length)
    method Collections.<T#2>sort(List<T#2>) is not applicable
      (inferred type does not conform to declared bound(s)
        inferred: Student_Object
        bound(s): Comparable<? super Student_Object>)
  where T#1,T#2 are type-variables:
    T#1 extends Object declared in method <T#1>sort(List<T#1>,Comparator<? super T#1>)
    T#2 extends Comparable<? super T#2> declared in method <T#2>sort(List<T#2>)
----
(Alt-Enter shows hints)
Run Code Online (Sandbox Code Playgroud)

得到它的工作.我使用了Collections.sort(studentsList,new Student_Object());

感谢大家

kos*_*osa 8

一种方法是:

编写一个comparator覆盖compare方法.然后通过传递比较器使用Collections.sort().

例:

class StudentComparator implements Comparator<Student> {

    public int compare(Student stud1, Student stud2){

        int stu1ID = stud1.getId();       
        int stu2ID = stud2.getId();

        if(stu1ID > stu2ID)
            return 1;
        else if(stu1ID < st21ID )
            return -1;
        else
            return 0;    
    }

}
Run Code Online (Sandbox Code Playgroud)

另一种风味可能是:

 class StudentComparator implements Comparator<Student> {

        public int compare(Student stud1, Student stud2){

            int stu1ID = stud1.getId();       
            int stu2ID = stud2.getId();

           return stud1ID-stu2ID;
        }

    }
Run Code Online (Sandbox Code Playgroud)

教程可能对您有所帮助.