Сопоставимый не сортирующий объект

Мне сложно сортировать объекты по своим свойствам .

У меня есть список объектов пациента, которые я хочу сортировать в соответствии с их фамилией, но они не сортируют их вообще. Можете ли вы сказать мне, что я делаю неправильно?

Вот некоторые соответствующие коды.

Patient.java

import java.util.Comparator; public class Patient implements Comparable<Patient> { String fname, lname, mname, ID; public static class OrderByLastName implements Comparator<Patient> { @Override public int compare(Patient p1, Patient p2) { return p1.lname.compareTo(p2.lname); } } public static class OrderByID implements Comparator<Patient> { @Override public int compare(Patient p1, Patient p2) { return p1.ID.compareTo(p2.ID); } } @Override public int compareTo(Patient another) { // TODO Auto-generated method stub return 0; } } 

MainActivity.java

 public class PatientList extends ActionBarActivity { String[] newFName = {"Mark","Andy","Bryan"}; String[] newLName = {"Uy","Igy","Nator"}; String[] newMName = {"Wi","Menos","Pat"}; String[] newID = {"3","5","1"}; ArrayList<Patient> patientList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); createPatientList(); sortPatient(1); } private void createPatientList() { patientList = new ArrayList<Patient>(); for (int i = 0; i < newFName.length; i++) { Patient patient = new Patient(); patient.lname = newLName[i]; patient.fname = newFName[i]; patient.mname = newMName[i]; patient.ID = newID[i]; patientList.add(patient); } } private void sortPatient(int order){ switch (order) { case 1: Collections.sort(patientList, new Patient.OrderByLastName()); break; case 2: Collections.sort(patientList, new Patient.OrderByID()); break; default: break; } } } 

    Насколько я вижу, ваш код должен работать, и я подозреваю, что это будет доказательство. Если ваша проблема в том, что вы не можете увидеть обновление, возможно, ваша логика обновления просмотров виновата.

    Филипп, я просто скопировал ваш код и вставил его в проект java. Исходный код ниже, а также снимок экрана. Я не внес никаких изменений в класс пациента; Просто скопировал и вложил его в мой проект.

    Test.java:

     import java.util.ArrayList; import java.util.Collections; public class Test { static String[] newFName = { "Mark", "Andy", "Bryan" }; static String[] newLName = { "Uy", "Igy", "Nator" }; static String[] newMName = { "Wi", "Menos", "Pat" }; static String[] newID = { "3", "5", "1" }; static ArrayList<Patient> patientList; public static void main(String[] args) { createPatientList(); System.out.println("Before: "); for (Patient p : patientList) { System.out.println(p.lname); } sortPatient(1); System.out.println("\nAfter: "); for (Patient p : patientList) { System.out.println(p.lname); } } private static void createPatientList() { patientList = new ArrayList<Patient>(); for (int i = 0; i < newFName.length; i++) { Patient patient = new Patient(); patient.lname = newLName[i]; patient.fname = newFName[i]; patient.mname = newMName[i]; patient.ID = newID[i]; patientList.add(patient); } } private static void sortPatient(int order) { switch (order) { case 1: Collections.sort(patientList, new Patient.OrderByLastName()); break; case 2: Collections.sort(patientList, new Patient.OrderByID()); break; default: break; } } } 

    Скриншот:

    Скриншот