java中将数据按升序排列_Java笔试题:将集合中的学生信息按照学生的年龄升序排列...

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

89846776_1.jpg

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

class Student {

private intid;

private String name;

private intage;

publicStudent(intid, Stringname,intage) {

this.id = id;

this.name=name;

this.age = age;

}

publicintgetId() {

returnid;

}

publicvoid setId(intid) {

this.id = id;

}

publicString getName() {

returnname;

}

publicvoid setName(Stringname) {

this.name=name;

}

publicintgetAge() {

returnage;

}

publicvoid setAge(intage) {

this.age = age;

}

@Override

publicString toString() {

return"Student [id="+ id +", name="+name+", age="+ age +"]";

}

}

(1)使用冒泡排序算法

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

publicclass TestStudent {

publicstaticvoid main(String[] args) {

// TODO Auto-generated method stub

List list = new ArrayList();

list.add(new Student(1,"小张",20));

list.add(new Student(2,"小王",18));

list.add(new Student(3,"小李",19));

//使用冒泡排序算法

for(inti=0;i

for(intj=0;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所示。

89846776_2.jpg

图1 排序后的结果

(2)使用比较器实现

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

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

publicclass TestStudent {

publicstaticvoid main(String[] args) {

// TODO Auto-generated method stub

List list = new ArrayList();

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种参考方法,希望会对大家有所帮助和启示。

【编辑推荐】

【责任编辑:武晓燕 TEL:(010)68476606】

点赞 0

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值