静的メソッドを実装するクラス学生がいます
public static Comparator<Student> getCompByName()
これは、2つのStudentオブジェクトを属性「name」で比較するStudentの新しいコンパレータオブジェクトを返します。
関数getCompByName()を使用して、学生のArrayListを「名前」でソートして、これをテストする必要があります。
これが、StudentクラスのComparatorメソッドです。
public static Comparator<Student> getCompByName()
{
Comparator comp = new Comparator<Student>(){
@Override
public int compare(Student s1, Student s2)
{
return s1.name.compareTo(s2.name);
}
};
return comp;
}
そして、私がテストする必要があるメイン
public static void main(String[] args)
{
// TODO code application logic here
//--------Student Class Test-------------------------------------------
ArrayList<Student> students = new ArrayList();
Student s1 = new Student("Mike");
Student s2 = new Student("Hector");
Student s3 = new Student("Reggie");
Student s4 = new Student("zark");
students.add(s1);
students.add(s2);
students.add(s3);
students.add(S4);
//Use getCompByName() from Student class to sort students
私のメインでgetCompByName()を使用して、実際にArrayListを名前でソートする方法を誰にも教えてもらえますか?コンパレータは初めてで、その使用法に苦労しています。このメソッドはコンパレータを返すため、これがどのように実装されるかはわかりません。私はgetCompByName()を使用してソートする必要があることを知っていますが、それを実装する方法がわかりません。
Collections.sort(List、Comparator) メソッドを使用します。
Collections.sort(students, Student.getCompByName());
また、コードでList
を宣言するときにList
インターフェイスを使用するとよいでしょう。
List<Student> students = new ArrayList();
Student[]
を使用してArrayList
コンストラクターに渡すことでコードを強化することもできます。
public static void main(String[] args) {
Student[] studentArr = new Student[]{new Student("Mike"),new Student("Hector"), new Student("Reggie"),new Student("zark")};
List<Student> students = new ArrayList<Student>(Arrays.asList(studentArr));
Collections.sort(students, Student.getCompByName());
for(Student student:students){
System.out.println(student.getName());
}
}
完全なソースの要点 です。
Collections.sort()
を使用します。
Collections.sort(students, getCompByName());
注:コンパレータをprivate static final
変数にするのに役立つ場合があります。
注2:リストを変更inplace;新しいリストを作成しません。