创建对象的列表 / arrayList,然后对列表(Java)进行排序



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

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

ArrayList<Student_Object> studentsList = new ArrayList<>();

现在,我想对StudentId Fleid的清单进行排序。我该怎么办?

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


所以我在学生_object类中有这种方法

类是:

class Student_Object implements Comparator<Student_Object>

该方法是:

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

}

从哪里运行陈述?

Collections.sort(studentsList);

如果我从主班上运行它,我会在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)

让它起作用。我使用 collections.sort(sustemelList,new Student_object());

谢谢大家

一种方法是:

编写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;    
    }
}

另一种口味可能是:

 class StudentComparator implements Comparator<Student> {
        public int compare(Student stud1, Student stud2){
            int stu1ID = stud1.getId();       
            int stu2ID = stud2.getId();
           return stud1ID-stu2ID;
        }
    }

本教程可能会为您提供帮助。

要进行排序,您需要实现Comparable接口。我还强烈建议您在那里时实现平等和哈希码。示例:

public class Student implements Comparable  
{  
    private String name;  
    private int id;  
    ...
    public int compareTo(Student otherStudent)  
    {  
       if(this.id < otherStudent.id)  
       {  
          return -1;
       }  
       else if(this.id > otherStudent.id)  
       {  
           return 1;
       }  
        else{
           return 0;  
        }  
    }  
}  

最新更新