Сортировка моих проектов, которые анализируются из данных json

Мой клиент Android получает ответ JSON сервера следующим образом:

{"students":[{"id":1,"name":"John","age":12}, {"id":2,"name":"Thmas","age":13} {"id":3,"name":"Merit","age":10} ...]} 

Мой код клиента Android анализирует ответ JSON на объект Java с помощью gson .

Мои соответствующие классы Java:

 public class StudentList{ private List<Student> students; public List<Student> getStudents(){ return students; } } public class Student{ private long id; private String name; private int age; public long getId() { return id; } public String getName(){ return name; } public int getAge(){ return age; } } 

На данный момент все отлично работает для меня, я могу успешно разобрать данные JSON на мои объекты Java, например, следующее:

 //'jsonData' is the server responsed json data StudentList students = gson.fromJson(jsonData, StudentList.class) 

Затем я хотел бы немного изменить, чтобы получить students (из данных json ) в алфавитном порядке, отсортированных по имени ученика. Я пробовал следующим образом: (я изменил класс Student для реализации интерфейса Comparable<> ):

 public class Student implements Comparable<Student>{ private long id; private String name; private int age; public long getId() { return id; } public String getName(){ return name; } public int getAge(){ return age; } // Override compareTo(), sort by 'name' @Override public int compareTo(Student obj) { return this.getName().compareToIgnoreCase(obj.Name()); } } 

С измененным классом Student я попытался снова проанализировать данные json:

 //'jsonData' is the server responsed json data StudentList students = gson.fromJson(jsonData, StudentList.class) 

Но students по-прежнему остаются такими же, как и до сортировки. Мое решение для сортировки не работает вообще. Зачем?? Где я ошибаюсь?

Gson не будет сортировать элементы в списке, он все равно просто добавит элементы. Вы можете отсортировать список после его создания с помощью метода Collections.sort :

 java.util.Collections.sort(students); 

Простое внедрение Comparable не приведет к сортировке вашего класса; Вы должны на самом деле что- то сделать, чтобы отсортировать его.

Просто потому, что ваш класс Comparable не позволяет каждой коллекции автоматически сортировать себя. Вы должны указать определенную коллекцию для сортировки с использованием естественного упорядочения, используя что-то вроде Collections.sort(students);

Intereting Posts
Является ли RelativeLayout более дорогим, чем LinearLayout? Android: использование MotionEvent для перетаскивания позиций в виде ViewGroup В чем разница между оператором sim и оператором сети Разбор локального xml-андроида с возможностью рисования Разработка ежедневной тревоги в android Ошибка неразрешенной зависимости при создании нового проекта Отправка SMS с использованием Intent не добавляет получателей на некоторые устройства Android Pay – пример приложения не работает («Недоступно здесь») Группировка нескольких из множества исходных кодов, имеющих точно такую ​​же конфигурацию Шина событий и жизненный цикл компонентов android ui Нужна помощь в рисовании кнопок вокруг кругового пути в Java-коде? Настройка параметров.FLASH_MODE_TORCH не работает на Droid X 2.3 Lint неиспользуемые ресурсы ложных срабатываний с новой версией плагина android для градиента Обработка изображений на Android – какие библиотеки я могу использовать? В базе данных существует запись Android ()?