对ArrayList容器中的数据进行排序

案例介绍

>ArrayList中存储多个person对象(包括name、age、id)要求按年龄从小到大排序,年龄相等的话按名字的大小排序输出

案例设计

>使用ArrayList来存储person对象

>使用Collections类提供的静态Sort方法来排序,最终输出排序好的结果

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class Dem03 {

	public static void main(String[] args) {
		List<Person> data = new ArrayList<>();
		data.add(new Person("jack",18,10));
		data.add(new Person("jay",20,5));
		data.add(new Person("lucy",15,8));
		data.add(new Person("rose",21,1));
		data.add(new Person("pete",15,12));
		
		/**
		 * 根据指定比较器产生的顺序对指定列表进行排序
		 */
		Collections.sort(data, new Comparator<Person>() {
			public int compare(Person o1, Person o2) {
				if(o1.getAge() - o2.getAge()>0) {
					return 1;
				}else if(o1.getAge() - o2.getAge()<0) {
					return -1;
				}else {
					return o1.getName().compareTo(o2.getName());//如果年龄相同则通过名字排序,通过调用compareTo按名字字典排序
				}
			}
		});
		
		/**
		 * 通过增加for循环输出
		 */
		for(Person p:data) {
			System.out.println(p);
		}
	}
	

}

class Person{
	private String name;
	private int age;
	private int 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;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	
	public Person(String name, int age, int id) {
		super();
		this.name = name;
		this.age = age;
		this.id = id;
	}
	@Override
	public String toString() {
		return "Person [name=" + name + ", age=" + age + ", id=" + id + "]";
	}
	
	
}


猜你喜欢

转载自blog.csdn.net/wyf2017/article/details/80217924