Java 对从json数据解析的项目进行排序
我的Android客户端获取服务器JSON响应,如下所示:Java 对从json数据解析的项目进行排序,java,android,comparable,Java,Android,Comparable,我的Android客户端获取服务器JSON响应,如下所示: {"students":[{"id":1,"name":"John","age":12}, {"id":2,"name":"Thmas","age":13} {"id":3,"name":"Merit","age":10} ...]} 我的Android客户端代码通过使用解析Java对象的JSON响应 我对应的Java类: public class Stud
{"students":[{"id":1,"name":"John","age":12},
{"id":2,"name":"Thmas","age":13}
{"id":3,"name":"Merit","age":10}
...]}
我的Android客户端代码通过使用解析Java对象的JSON响应
我对应的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
数据)按字母顺序,按学生的姓名进行排序。我尝试了以下方法:(我更改了Student
类以实现Comparable
接口):
但是排序后的学生
仍然与排序前相同。我的排序解决方案根本不起作用为什么??我错在哪里了???简单地实现可比性不会让你的类被排序;实际上,您必须做一些事情来对其进行排序。仅仅因为您的类具有可比性,并不能使每个集合自动进行排序。您必须告诉特定集合使用自然排序器进行排序,方法是使用Collections.sort(students)代码>gson不会对列表中的项目进行排序,它仍然只会添加项目。创建列表后,可以使用以下方法对列表进行排序:
有没有不直接使用的理由?我不熟悉java。但我认为你没有把名单整理好。尝试调用Collections.sort(学生)?您需要实际比较它们…谢谢,您能更具体一点吗?正如其他几个答案所示,Collections.sort()将是一个很好的方法。
//'jsonData' is the server responsed json data
StudentList students = gson.fromJson(jsonData, StudentList.class)
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());
}
}
//'jsonData' is the server responsed json data
StudentList students = gson.fromJson(jsonData, StudentList.class)
java.util.Collections.sort(students);