Java学习 TreeSet比较器

TreeSet:可以对Set集合的元素进行排序,是不同步的

public class TreeSetDemo {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		TreeSet ts = new TreeSet();
		
		Person p1 = new Person("张三",21);
		Person p2 = new Person("李四",23);
		Person p3 = new Person("王五",25);
		
		ts.add(p1);
		ts.add(p2);
		ts.add(p3);
		
		System.out.println(ts);
		
	}

}

这需要我们自定义类继承Comparable接口并重写其compareTo()方法

	public int compareTo(Object o) {
		// TODO 自动生成的方法存根
		Person p = (Person)o;
		return this.name.compareTo(p.name);
	
	}

      如果不要按照对象的自然顺序进行排序,如果对象中不具备自然顺序

        那么可以使用TreeSet集合的第二种排序方式 让集合自身具备比较功能 定义一个类实现Comparator接口,覆盖compare方法 将该类对象作为参数传递给TreeSet集合的构造函数

public class TreeSetDemo {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		TreeSet ts = new TreeSet(new MyComparator());
		
		Person p1 = new Person("d",25);
		Person p2 = new Person("s",23);
		Person p3 = new Person("a",25);
		Person p4 = new Person("b",27);
		
		ts.add(p1);
		ts.add(p2);
		ts.add(p3);
		ts.add(p4);
		System.out.println(ts);
		
	}

}
class MyComparator implements Comparator
{

	@Override
	public int compare(Object o1, Object o2) {
		// TODO 自动生成的方法存根
		Person p1 = (Person)o1;
		Person p2 = (Person)o2;
		
		return p1.getName().compareTo(p2.getName());
	}
	
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值