TreeSet实现排序(二)

简介: package cn.cp; import java.util.Comparator; import java.util.Iterator; import java.
package cn.cp;
import java.util.Comparator;
import java.util.Iterator;
import java.util.TreeSet;
//TreeSet实现排序的第二种办法:让容器本身实现排序的功能
//因为TreeSet有一构造方法:TreeSet tr=new TreeSet(Comparator c);
//其参数为实现了Comparator接口的类
//
//总结:
//在方法一中,要让对象本身具有可比性,所以implements Comparable(形容词)
//在方法二中,要让容器本身实现排序的功能,即使其变成一个可排序的容器
//所以采用了TreeSet treeSet=new TreeSet(new tempComparator());
//tempComparator类实现了implements Comparator(名词)
class Beauty {
	private int age;
	private String name;

	public Beauty(int age, String name) {
		this.age = age;
		this.name = name;
	}

	public int getAge() {// 缺一个总结
		return age;
	}

	public String getName() {
		return name;
	}

	@Override
	public String toString() {
		return "Beauty [age=" + age + ", name=" + name + "]";
	}
}

class tempComparator implements Comparator {
	@Override
	public int compare(Object arg0, Object arg1) {
		Beauty beauty0 = (Beauty) arg0;
		Beauty beauty1 = (Beauty) arg1;
		if (beauty0.getAge() < beauty1.getAge()) {
			return -1;
		}
		if (beauty0.getAge() == beauty1.getAge()) {// 年龄相同时再比较姓名
			return beauty0.getName().compareTo(beauty1.getName());
		}
		if (beauty0.getAge() > beauty1.getAge()) {
			return 1;
		}
		return 0;
	}

}

public class TreeSetTest2 {
	public static void main(String[] args) {
		Beauty bea1=new Beauty(25, "aim");
		Beauty bea2=new Beauty(26, "dim");
		Beauty bea3=new Beauty(25, "xim");
		Beauty bea4=new Beauty(29, "gim");
		Beauty bea5=new Beauty(21, "zim");
 	        TreeSet treeSet=new TreeSet(new tempComparator());
 	        treeSet.add(bea1);
 	        treeSet.add(bea2);
 	        treeSet.add(bea3);
 	        treeSet.add(bea4);
 	        treeSet.add(bea5);
 	        Iterator iterator=treeSet.iterator();
	        while(iterator.hasNext()){
	        	Beauty t=(Beauty) iterator.next();
	        	System.out.println(t.getName()+"的年纪是"+t.getAge());
	        }
	}
}

相关文章
|
7月前
TreeMap的排序
TreeMap的排序
40 0
|
8月前
TreeSet集合
TreeSet集合
28 0
|
10月前
TreeMap实现排序
TreeMap实现排序
|
存储 安全 API
TreeSet详解
TreeSet详解
120 0
TreeSet详解
TreeSet的两种排序方式
示例: 示例公用类: public class MyDate { private int month; private int year; private int day; @Override public String toString() { return "MyDate{" + "month=" + month + ", year=" + year +
78 0
TreeSet的两种排序方式
|
存储 Java 索引
【Java集合类】之TreeSet集合与Comparable/Comparator排序
【Java集合类】之TreeSet集合与Comparable/Comparator排序
109 0
|
存储 Java 索引
Java中TreeSet集合、自然排序、比较器排序、成绩排序及不重复随机数案例
TreeSet集合、自然排序、比较器排序、成绩排序及不重复随机数案例的简单示例
149 0
Java中TreeSet集合、自然排序、比较器排序、成绩排序及不重复随机数案例
|
存储
TreeSet相关问题
TreeSet相关问题
|
Shell
HashSet 如何体现出无序性?
HashSet 如何体现出无序性?
158 0
|
存储 算法 Java
TreeSet类的排序问题
TreeSet支持两种排序方法:自然排序和定制排序。TreeSet默认采用自然排序。1、自然排序    TreeSet会调用集合元素的compareTo(Object obj)方法来比较元素之间大小关系,然后将集合元素按升序排列,这种方式就是自然排序。
1627 0