(一道面试题)对一个对象数组进组排序
这是我在一个面试初级工程师的时候遇到的一个问题,觉得在项目中都没怎么遇到.
一.编写一个Student对象
public class Student { private String name; private Integer age; /** * @return the name */ /** * @return the name */ public String getName() { return name; } /** * @param name the name to set */ public void setName(String name) { this.name = name; } /** * @return the age */ public Integer getAge() { return age; } /** * @param age the age to set */ public void setAge(Integer age) { this.age = age; } /** * <p>Title: </p> * <p>Description: </p> * @param name * @param age */ public Student(String name, Integer age) { super(); this.name = name; this.age = age; } /* (non-Javadoc) * @see java.lang.Comparable#compareTo(java.lang.Object) */ /* (non-Javadoc) * @see java.lang.Comparable#compareTo(java.lang.Object) */ }
二.编写测试类主要用到得时Collections这个辅助工具
1.Collections.sort方法支持对对象进组排序
2.使用方法:只要实现Comparator方法.
3.实现目的:主要是告诉这个方法我要用什么方式进行对象的排序
4.这里我将对学生的年龄进行排序,年龄相等的对名字再进行排序
package com.hck.test; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.List; public class ArrayListDemo { public static void main(String[] args) { //创建数组并且添加对象 List<Student> slist=new ArrayList<Student>(); slist.add(new Student("张三", 28)); slist.add(new Student("王五", 23)); slist.add(new Student("老六", 27)); slist.add(new Student("啊四", 21)); slist.add(new Student("大红", 21)); System.out.println("===排序前==="); for (Student student:slist) { System.out.print(student.getName()+" "); } System.out.println(); /** * Collections.sort方法支持对对象进组排序 * 使用方法:只要实现Comparator方法. * 这个方法主要是告诉这个方法我要用什么方式进行对象的排序 * 这里我将对学生的年龄进行排序,年龄相等的对名字再进行排序 */ Collections.sort(slist, new Comparator<Student>() { @Override public int compare(Student o1, Student o2) { //大于返回1 if(o1.getAge()>o2.getAge()) { return 1; } //小于返回-1 if(o1.getAge()<o2.getAge()) { return -1; } //等于的话比较name的大小 //compareTo返回值也是正数,0,负数 //对应的是大于,等于,小于 return(o1.getName().compareTo(o2.getName())); // TODO Auto-generated method stub } }); System.out.println("===排序后==="); //增强for循环语句打印输出 for (Student student:slist) { System.out.print(student.getName()+" "); } } }
四.实验结果:
五.总结:这个主要是对数组熟悉程度的一个考察.