我的Android客户端获得服务器JSON响应如下:
{"students":[{"id":1,"name":"John","age":12},
{"id":2,"name":"Thmas","age":13}
{"id":3,"name":"Merit","age":10}
...]}
我的Android客户端代码使用gson解析JSON对Java对象的响应。
我对应的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
数据),按学生的name
排序。我尝试了以下方法:(我更改了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
仍然与排序前相同。我的排序解决方案根本不起作用。的为什么?我哪里错了?
答案 0 :(得分:5)
简单地实现Comparable不会使您的类被排序;你必须实际做一些东西来排序。
答案 1 :(得分:2)
gson不会对列表中的项目进行排序,它仍然只是添加项目。您可以使用Collections.sort
方法创建列表后对列表进行排序:
java.util.Collections.sort(students);
答案 2 :(得分:1)
仅仅因为您的班级Comparable
并未使每个收藏集自动排序。您必须使用Collections.sort(students);