Java笔试题:将集合中的学生信息按照学生的年龄升序排列
2017-01-17 09:20
726 查看
青年教育社 2017-01-16 13:45
最近很多学员在参加笔试时都被问到集合中排序的问题,在新年的第一篇文章中给大家分享一下相关内容。“将集合中的学生信息按照学生的年龄升序排列”这个题目主要考察的是求职者对集合中元素存取以及元素值比较的方法、排序方法(一般使用冒泡排序)、泛型集合、集合中自带的sort方法、集合中比较器的应用等。下面分别使用冒泡排序和Sort完成题目的要求。
无论使用哪种方法都需要先创建学生信息类,通常会要求在类中存放学号、年龄、姓名等属性。学生信息类的代码如下所示。
class Student {
private int id;
private String name;
private int age;
public Student(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
public int getId {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString {
return "Student [id=" + id + ", name=" + name + ", age=" + age + "]";
}
}
(1)使用冒泡排序算法
由于题目要求是按照学生的年龄排序,因此,在遍历集合元素时要根据年龄进行比较,并交换集合中相应元素的值。实现的代码如下所示。
public class TestStudent {
public static void main(String[] args) {
// TODO Auto-generated method stub
List<Student> list = new ArrayList<Student>;
list.add(new Student(1,"小张",20));
list.add(new Student(2,"小王",18));
list.add(new Student(3,"小李",19));
//使用冒泡排序算法
for(int i=0;i<list.size-1;i++){
for(int j=0;j<list.size-1-i;j++){
if(list.get(j).getAge>list.get(j+1).getAge){
Student student=list.get(j);
list.set(j, list.get(j+1));
list.set(j+1, student);
}
}
}
for(Student stu:list){
System.out.println(stu);
}
}
}
执行上面的代码,效果如图1所示。
图1 排序后的结果
(2)使用比较器实现
在List集合中提供了sort方法能直接对集合中的元素实现冒泡排序,但由于在集合中存放的值是类的实例,而不是单纯的值,因此,需要借助集合中的比较器来实现对学生信息类的年龄排序。使用比较器可以通过实现Comparator接口或者实现Comparable接口来完成,实现Comparator接口时,通常是自定义一个类来完成,并重写compare方法;实现Comparable接口时,通常是直接用到要比较的类中,并重写compareTo方法,比如,要比较学生信息类中的年龄属性值,直接在学生信息类中实现Comparable接口即可。
在本例中采用的方式是实现Comparator接口的方式,自定义一个名为MyCompare的类,代码如下所示。
public class TestStudent {
public static void main(String[] args) {
// TODO Auto-generated method stub
List<Student> list = new ArrayList<Student>;
list.add(new Student(1,"小张",20));
list.add(new Student(2,"小王",18));
list.add(new Student(3,"小李",19));
Collections.sort(list,new MyCompare); //使用比较器
for(Student stu:list){
System.out.println(stu);
}
}
}
执行上面的代码,效果与图1一致。
至此,使用了2种方式完成将集合中学生信息按照年龄升序排序的操作。当然,完成对集合中元素排序的操作会有很多方法,这里只是给出2种参考方法,希望会对大家有所帮助和启示。
【编辑推荐】
本文为头条号作者发布,不代表今日头条立场。
最近很多学员在参加笔试时都被问到集合中排序的问题,在新年的第一篇文章中给大家分享一下相关内容。“将集合中的学生信息按照学生的年龄升序排列”这个题目主要考察的是求职者对集合中元素存取以及元素值比较的方法、排序方法(一般使用冒泡排序)、泛型集合、集合中自带的sort方法、集合中比较器的应用等。下面分别使用冒泡排序和Sort完成题目的要求。
无论使用哪种方法都需要先创建学生信息类,通常会要求在类中存放学号、年龄、姓名等属性。学生信息类的代码如下所示。
class Student {
private int id;
private String name;
private int age;
public Student(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
public int getId {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString {
return "Student [id=" + id + ", name=" + name + ", age=" + age + "]";
}
}
(1)使用冒泡排序算法
由于题目要求是按照学生的年龄排序,因此,在遍历集合元素时要根据年龄进行比较,并交换集合中相应元素的值。实现的代码如下所示。
public class TestStudent {
public static void main(String[] args) {
// TODO Auto-generated method stub
List<Student> list = new ArrayList<Student>;
list.add(new Student(1,"小张",20));
list.add(new Student(2,"小王",18));
list.add(new Student(3,"小李",19));
//使用冒泡排序算法
for(int i=0;i<list.size-1;i++){
for(int j=0;j<list.size-1-i;j++){
if(list.get(j).getAge>list.get(j+1).getAge){
Student student=list.get(j);
list.set(j, list.get(j+1));
list.set(j+1, student);
}
}
}
for(Student stu:list){
System.out.println(stu);
}
}
}
执行上面的代码,效果如图1所示。
图1 排序后的结果
(2)使用比较器实现
在List集合中提供了sort方法能直接对集合中的元素实现冒泡排序,但由于在集合中存放的值是类的实例,而不是单纯的值,因此,需要借助集合中的比较器来实现对学生信息类的年龄排序。使用比较器可以通过实现Comparator接口或者实现Comparable接口来完成,实现Comparator接口时,通常是自定义一个类来完成,并重写compare方法;实现Comparable接口时,通常是直接用到要比较的类中,并重写compareTo方法,比如,要比较学生信息类中的年龄属性值,直接在学生信息类中实现Comparable接口即可。
在本例中采用的方式是实现Comparator接口的方式,自定义一个名为MyCompare的类,代码如下所示。
public class TestStudent {
public static void main(String[] args) {
// TODO Auto-generated method stub
List<Student> list = new ArrayList<Student>;
list.add(new Student(1,"小张",20));
list.add(new Student(2,"小王",18));
list.add(new Student(3,"小李",19));
Collections.sort(list,new MyCompare); //使用比较器
for(Student stu:list){
System.out.println(stu);
}
}
}
执行上面的代码,效果与图1一致。
至此,使用了2种方式完成将集合中学生信息按照年龄升序排序的操作。当然,完成对集合中元素排序的操作会有很多方法,这里只是给出2种参考方法,希望会对大家有所帮助和启示。
【编辑推荐】
本文为头条号作者发布,不代表今日头条立场。
相关文章推荐
- 将集合中的学生信息按照学生的年龄升序排列
- 将集合中的学生的年龄升序排列
- Java 往TreeSet集合中存储自定义对象学生,按照学生的年龄进行排序。
- Java基础知识强化之集合框架笔记49:键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低输出到控制台
- 【java编程】Map集合之TreeMap按学生姓名进行升序排序
- Java基础知识强化之IO流笔记51:IO流练习之 键盘录入学生信息按照总分排序写入文本文件中的案例
- 将用户按年龄分组,显示组人数大于2的,并按照人数降序排列,人数一样多的时候按照年龄升序排列。`
- 1061 有N个学生的数据,将学生数据按成绩高低排序,如果成绩相同则按姓名字符的字母序排序,如果姓名的字母序也相同则按照学生的年龄排序,并输出N个学生排序后的信息。
- java中list集合获取学生信息
- 【Java】给定一个有序整数数组,元素各不相同且按照升序排列,编写一个算法,创建一个高度最小的二叉查找树
- 集合框架_键盘录入学生信息按照总分排序后输出在控制台案例)
- java 之list集合按照字段升序或降序
- (Java)集合的综合运用实例——实现学生信息管理
- Java 使用TreeMap对学生对象的年龄进行升序排序。
- 笔试题:创建一个单链表,结点包含学生的学号,姓名,性别,年龄信息.写几个程序,实现按学生学号插入,查询,删除等操作.
- Student类,包括学生姓名、性别、年龄、Java成绩。要求创建五个该类对象,输出每个学生信息,计算并输出这五个学生Java成绩的平均值, 以及计算并输出他们Ja
- java小练习(已知学生有学号,姓名,性别,年龄,身高,体重六项基本信息,依次从键盘录入该学生信息,完成后输出该生详细信息。)
- java输入学生信息,按总分成绩由高到低排列,输出到文件中
- java基础—自定义一个比较器,按照字符串的长度升序的方法来比较字符串进行储存(java集合三)
- SQL - 找出年龄在18到20之间的学生的学号、姓名、年龄,并按年龄升序排列