最近有很多同学在笔试的时候被问到集合排序的问题。内容。《将集合中的学生信息按年龄从小到大排序》主要考察求职者访问集合中元素并比较元素值的方法、排序方法(一般采用冒泡排序)、泛型集合、集合中内置的sort方法,比较器在集合中的应用等。下面分别使用冒泡排序和Sort来完成题目的要求。无论使用哪种方式,都需要先创建学生信息类,类中通常需要存储学号、年龄、姓名等属性。学生信息类的代码如下所示。classStudent{privateintid;privateStringname;privateintage;publicStudent(intid,Stringname,intage){this.id=id;this.name=name;this.age=age;}publicintgetId(){returnid;}publicvoidsetId(intid){this.id=id;}publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicintgetAge(){returnage;}publicvoidsetAge(intage){this.age=age;}@OverridepublicStringtoString(){return"Student[id="+id+",name="+name+",age="+age+"]";}}(1)使用冒泡排序算法由于题目要求是按照学生年龄排序的,因此,在遍历集合元素时,会根据它们的年龄进行比较,并交换集合中相应元素的值。实现的代码如下所示。publicclassTestStudent{publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubListlist=newArrayList();list.add(newStudent(1,"小张",20));list.add(newStudent(2,"小王",18));list.add(newStudent(3,"小李",19));//使用冒泡排序算法for(inti=0;ilist.get(j+1).getAge()){Studentstudent=list.get(j);list.set(j,list.get(j+1));list.set(j+1,student);}}}for(Studentstu:list){System.out.println(stu);}}}执行上面的代码,效果如图1。图1排序后的结果(2)使用比较器实现List集合中的sort方法可以直接实现冒泡排序集合中的元素,但是因为集合中存储的值是类的实例,而不是简单的值,因此,需要在集合中使用比较器来对学生信息类的年龄进行排序。可以通过实现Comparator接口或Comparable接口来使用比较器。在实现Comparator接口时,通常是通过自定义一个类,重写compare方法来完成;在实现Comparable接口时,通常直接在要比较的类中使用,重写compareTo方法。比如比较学生信息类中的age属性值,直接在学生信息类中实现Comparable接口即可。本例使用的方法是实现Comparator接口,自定义一个名为MyCompare的类。代码如下。publicclassTestStudent{publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubListlist=newArrayList();list.add(newStudent(1,"小张",20));list.add(newStudent(2,"小王",18));list.add(newStudent(3,"小李",19));Collections.sort(list,newMyCompare());//使用比较器for(Studentstu:list){System.out.println(stu);}}}执行以上代码,效果与图1一致。至此,通过两种方法完成了对集合中的学生信息进行升序排序的操作年龄。当然,有很多种方法可以完成对集合中元素进行排序的操作。这里仅提供两种参考方法,希望对大家有所帮助和启发。