二叉树定义:
通俗点说,就是只有最多只有两颗子树,且分为左、右子树。
排序:首先分为两种:
1)自然排序,也就是 比如整形数据int ,这时TreeSet会自动的根据数据的大小来排序,这时JVM自动实现的,如
package com;
import java.util.*;
public class TreeSetTest {
/**
* @param args
*/
public static void main(String[] args) {
TreeSet ts=new TreeSet();
ts.add(5);
ts.add(10);
ts.add(1);
ts.add(7);
ts.add(8);
System.out.println(ts);
}
}
输出结果为:[1, 5, 7, 8, 10]
但是,若是我们自定义的类,如person类,JVM就不会自动排序了,因为,JVM不知道根据什么排序,这时我们就可以分两种方式来实现排序了:1)实现Comparator接口 ,构造比较器 2)在定义的类中实现Comparable接口,并重写compareTo()方法,compareTo方法中定义排序的方式。
比较器的实现:
package com_1;
import java.util.*;
public class TreeSetDome {
/**
* @param args
*/
public static void main(String[] args) {
TreeSet t=new TreeSet(new MyCompator());
t.add(new Person(1,"wq1"));
t.add(new Person(2,"wq2"));
t.add(new Person(3,"wq3"));
t.add(new Person(0,"wq0"));
Iterator it=t.iterator();
while(it.hasNext()){
Person p=(Person)it.next();
System.out.println(p);
}
}
}
//比较器的实现
class MyCompator implements Comparator{
@Override
public int compare(Object o1, Object o2) {
Person p1=(Person)o1;
Person p2=(Person)o2;
return p1.getAge()-p2.getAge();
}
}
class Person{
private String name;
private int age;
public Person(int age,String name){
this.age=age;
this.name=name;
}
public int getAge(){
return this.age;
}
public String getName(){
return this.name;
}
public String toString(){
return this.age+"---->"+this.name;
}
}
楼主,这是我看毕老师的课,自己写的,上面就是比较器的实现。
希望这个答案能帮助你!
|