Java笔试题:将集合中的学生信息按照学生的年龄升序排列

最近很多学员在参加笔试时都被问到集合中排序的问题,在新年的***篇文章中给大家分享一下相关内容。“将集合中的学生信息按照学生的年龄升序排列”这个题目主要考察的是求职者对集合中元素存取以及元素值比较的方法、排序方法(一般使用冒泡排序)、泛型集合、集合中自带的sort方法、集合中比较器的应用等。下面分别使用冒泡排序和Sort完成题目的要求。

成都创新互联公司是一家专业从事成都网站设计、网站建设、网页设计的品牌网络公司。如今是成都地区具影响力的网站设计公司,作为专业的成都网站建设公司,成都创新互联公司依托强大的技术实力、以及多年的网站运营经验,为您提供专业的成都网站建设、营销型网站建设及网站设计开发服务!

无论使用哪种方法都需要先创建学生信息类,通常会要求在类中存放学号、年龄、姓名等属性。学生信息类的代码如下所示。

 
 
  1. class Student {  
  2.     private int id; 
  3.     private String name; 
  4.     private int age;         
  5.     public Student(int id, String name, int age) {       
  6.         this.id = id; 
  7.         this.name = name; 
  8.         this.age = age; 
  9.     } 
  10.     public int getId() { 
  11.         return id; 
  12.     } 
  13.     public void setId(int id) { 
  14.         this.id = id; 
  15.     } 
  16.     public String getName() { 
  17.         return name; 
  18.     } 
  19.     public void setName(String name) { 
  20.         this.name = name; 
  21.     } 
  22.     public int getAge() { 
  23.         return age; 
  24.     } 
  25.     public void setAge(int age) { 
  26.         this.age = age; 
  27.     } 
  28.     @Override 
  29.     public String toString() { 
  30.         return "Student [id=" + id + ", name=" + name + ", age=" + age + "]"; 
  31.     } 
  32. }     

(1)使用冒泡排序算法

由于题目要求是按照学生的年龄排序,因此,在遍历集合元素时要根据年龄进行比较,并交换集合中相应元素的值。实现的代码如下所示。

 
 
  1. public class TestStudent { 
  2.  
  3.     public static void main(String[] args) { 
  4.         // TODO Auto-generated method stub 
  5.         List list = new ArrayList(); 
  6.         list.add(new Student(1,"小张",20)); 
  7.         list.add(new Student(2,"小王",18)); 
  8.         list.add(new Student(3,"小李",19)); 
  9.         //使用冒泡排序算法 
  10.         for(int i=0;i
  11.             for(int j=0;j
  12.                 if(list.get(j).getAge()>list.get(j+1).getAge()){ 
  13.                     Student student=list.get(j); 
  14.                     list.set(j, list.get(j+1)); 
  15.                     list.set(j+1, student); 
  16.                 } 
  17.             } 
  18.         }        
  19.         for(Student stu:list){ 
  20.             System.out.println(stu); 
  21.         } 
  22.     } 

执行上面的代码,效果如图1所示。

图1 排序后的结果

(2)使用比较器实现

在List集合中提供了sort方法能直接对集合中的元素实现冒泡排序,但由于在集合中存放的值是类的实例,而不是单纯的值,因此,需要借助集合中的比较器来实现对学生信息类的年龄排序。使用比较器可以通过实现Comparator接口或者实现Comparable接口来完成,实现Comparator接口时,通常是自定义一个类来完成,并重写compare方法;实现Comparable接口时,通常是直接用到要比较的类中,并重写compareTo方法,比如,要比较学生信息类中的年龄属性值,直接在学生信息类中实现Comparable接口即可。

在本例中采用的方式是实现Comparator接口的方式,自定义一个名为MyCompare的类,代码如下所示。

 
 
  1. public class TestStudent { 
  2.     public static void main(String[] args) { 
  3.         // TODO Auto-generated method stub 
  4.         List list = new ArrayList(); 
  5.         list.add(new Student(1,"小张",20)); 
  6.         list.add(new Student(2,"小王",18)); 
  7.         list.add(new Student(3,"小李",19));        
  8.         Collections.sort(list,new MyCompare());  //使用比较器 
  9.         for(Student stu:list){ 
  10.             System.out.println(stu); 
  11.         } 
  12.     } 

执行上面的代码,效果与图1一致。

至此,使用了2种方式完成将集合中学生信息按照年龄升序排序的操作。当然,完成对集合中元素排序的操作会有很多方法,这里只是给出2种参考方法,希望会对大家有所帮助和启示。

名称栏目:Java笔试题:将集合中的学生信息按照学生的年龄升序排列
转载注明:http://www.shufengxianlan.com/qtweb/news28/237928.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联