Collections 有sort方法,但是如果list中保存的是一个自定义的对象,就需要自己来写排序的方法了,重写Comparator

方法,实现自己的不同对象比较方法


自定义对象:

package com.java.datastructure;

public class Peo
{
	private String name;
	
	private int age;
	
	@Override
	public int hashCode()
	{
		final int prime = 31;
		int result = 1;
		result = prime * result + ((name == null) ? 0 : name.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj)
	{
		if(this == obj) return true;
		if(obj == null) return false;
		if(getClass() != obj.getClass()) return false;
		Peo other = (Peo) obj;
		if(name == null)
		{
			if(other.name != null) return false;
		}
		else if(!name.equals(other.name)) return false;
		return true;
	}


	public Peo()
	{
	}

	public Peo(String name)
	{
		this.name = name;
	}

	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;
	}
}

测试方法:

package com.java.datastructure;

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


public class T2
{
	public static void main(String[] args)
	{
		t1();
	}
	
	static void t1(){
		boolean flag ;
		List<Peo> list = new ArrayList<Peo>();
		Peo peo = new Peo("j");
		peo.setAge(100);
		list.add(peo);
	
		Peo peo2 = new Peo("m");
		peo2.setAge(79);
		list.add(peo2);
		Peo peo3 = new Peo("m");
		peo3.setAge(200);
		list.add(peo3);
		for(Peo p:list){
			System.out.println(p.getAge());
		}
		System.out.println("-------------------------------");
		Collections.sort(list, new Comparator<Peo>()
		{
			@Override
			public int compare(Peo o1, Peo o2)
			{
				return new Integer(o1.getAge()).compareTo(new Integer(o2.getAge()));
			}
		});
		for(Peo p:list){
			System.out.println(p.getAge());
		}	
		
	}
	
}
打印的结果为:

100
79
200
-------------------------------
79
100
200



posted on 2015-09-11 09:32  wyang0126  阅读(116)  评论(0编辑  收藏  举报