package cn.set;
import java.util.Comparator;
import java.util.Iterator;
import java.util.TreeSet;
/**
* TreeSet集合的第二种排序,开发中常用,让集合本身具有比较功能,
* 定义一个类是实现Comparator接口,重写compare方法,将该对象作为参数传给TreeSet集合的构造函数
* @author Administrator
*
*/
public class TreeSetDemo_1 {
public static void main(String[] args) {
//创建一个TreeSet集合,并调用有参的构造函数,使集合本身具有比较功能
TreeSet ts = new TreeSet(new NewCompareName());
//向集合中添加元素
ts.add(new Teacher("李霞",26));
ts.add(new Teacher("李钢",22));
ts.add(new Teacher("龙葵",28));
ts.add(new Teacher("左轮",45));
//按照名字进行排序
sortName(ts);
}
/**
* 用迭代器获取按照名字排序的所有元素
*/
public static void sortName(TreeSet ts) {
//使用迭代器获取所有元素
Iterator it = ts.iterator();
while(it.hasNext()){
//强制向下转换类型
Teacher th = (Teacher)it.next();
System.out.println(th);
}
}
}
/**
* 创建一个Teacher类
* @author Administrator
*
*/
class Teacher{
//私有成员变量
private String name;
private int age;
//构造函数初始化对象
public Teacher(String name, int age) {
super();
this.name = name;
this.age = age;
}
//set 与get 方法
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;
}
//重写toString方法
@Override
public String toString() {
return "姓名:"+name+"\t年龄"+age;
}
}
/**
* 创建新的比较器,按照名字排序
* @author Administrator
*
*/
class NewCompareName implements Comparator{
@Override
public int compare(Object o1, Object o2) {
//强制转换类型
Teacher t1 = (Teacher)o1;
Teacher t2 = (Teacher)o2;
//比较name
int temp = t1.getName().compareTo(t2.getName());
return temp==0?t1.getAge()-t2.getAge():temp;
}
}
|
|