Live2D
TOP

(一道面试题)对一个对象数组进组排序

这是我在一个面试初级工程师的时候遇到的一个问题,觉得在项目中都没怎么遇到.

一.编写一个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()+" ");
	}
}
}

 四.实验结果:

五.总结:这个主要是对数组熟悉程度的一个考察.

 

posted @ 2017-11-15 20:32  Old-凯  阅读(779)  评论(0编辑  收藏  举报