TreeSet实现排序(二)

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());
	        }
	}
}
时间: 2024-07-29 00:42:48

TreeSet实现排序(二)的相关文章

java-Java TreeSet定制排序

问题描述 Java TreeSet定制排序 各位牛人,大家好! 我在练习TreeSet定制排序的时候.我发现在TreeSet构造函数里面定义一个Comparator的匿名内部类的实例,这个实例只需要实现compare这个方法就能运行.但是我看Comparator这个借口里面有两个方法,除了上面的那个还有一个equals.我比较好奇,内部类不需要实现接口的所有方法嘛?谢谢.下面是我的代码. import java.util.*; class R { int count; public R(int

java-Java中用TreeSet方法排序字符型数字怎么排序啊,求指教,谢谢

问题描述 Java中用TreeSet方法排序字符型数字怎么排序啊,求指教,谢谢 public class Demo implements Comparable{ //String str; String str; /*public Demo(){ }*/ public Demo(String str){ this.str=str; } public void getStr(String str){ this.str=str; } public String setStr(){ return st

泛型和TreeSet的应用(二)

package cn.us; import java.util.Comparator; import java.util.Iterator; import java.util.TreeSet; //泛型和TreeSet的应用(二) //TreeSet实现排序的第二种办法:让容器本身实现排序的功能 //因为TreeSet有一构造方法:TreeSet tr=new TreeSet(Comparator c); //其参数为实现了Comparator接口的类 // //总结: //在方法一中,要让对象

通过枚举控制比较TreeSet内容排序(实现接口comparator);随机生成一个汉字

随机生成一个汉字 /** * 随机生成一个汉字 * @return * @throws UnsupportedEncodingException */ public static String createStr() throws UnsupportedEncodingException { String str = null; int hightPos, lowPos; // 定义高低位 Random random = new Random(); hightPos = (176 + Math.

TreeSet实现排序(一)

package cn.cp; import java.util.Iterator; import java.util.TreeSet; //存入TreeSet集合中的元素是无序的,但有方法给它排序 //排序方式一:让元素自身具备比较性,需元素实现Comparable接口 //核心:重写Comparable接口的方法compareTo(Object obj) //if (tea.age == this.age) //年纪相同时再按照姓名排序!!! // return this.name.compa

拓扑排序(二) C++详解

拓扑排序介绍 拓扑排序(Topological Order)是指,将一个有向无环图(Directed Acyclic Graph简称DAG)进行排序进而得到一个有序的线性序列. 这样说,可能理解起来比较抽象.下面通过简单的例子进行说明! 例如,一个项目包括A.B.C.D四个子部分来完成,并且A依赖于B和D,C依赖于D.现在要制定一个计划,写出A.B.C.D的执行顺序.这时,就可以利用到拓扑排序,它就是用来确定事物发生的顺序的. 在拓扑排序中,如果存在一条从顶点A到顶点B的路径,那么在排序结果中B

java-ArrayList 和TreeSet排序问题

问题描述 ArrayList 和TreeSet排序问题 import java.util.*; public class Test { public static void main(String[] args) { Employee Allan = new Employee("Allan"); Employee Bell = new Employee("Bell"); Employee Chris = new Employee("Chris")

java集合类TreeMap和TreeSet及红黑树

看这篇博客前,我觉得很有必要先看下我之前的几篇博客 Red-Black Trees(红黑树)                                         (TreeMap底层的实现就是用的红黑树数据结构) 探索equals()和hashCode()方法                                 (TreeMap/TreeSet实现使用到的核心方法) java中的HashTable,HashMap和HashSet      (同为java集合类,对比下他们

java中treemap和treeset实现(红黑树)

TreeMap 的实现就是红黑树数据结构,也就说是一棵自平衡的排序二叉树,这样就可以保证当需要快速检索指定节点. TreeSet 和 TreeMap 的关系 为了让大家了解 TreeMap 和 TreeSet 之间的关系,下面先看 TreeSet 类的部分源代码: public class TreeSet<E> extends AbstractSet<E> implements NavigableSet<E>, Cloneable, java.io.Serializab