java :“TreeSet 类”
当要从集合中以有序的方式插入和抽取元素时,就可以使用 TreeSet 实现。
注意点:“添加到TreeSet 的元素是可排序的”。
TreeSet 类的常用方法:
方法名称 | 描述 |
---|---|
TreeSet () | 构建一个空的树集 |
TreeSet (Collection c) | 构建一个树集,并且添加集合c 中所有元素 |
TreeSet (Comparator c) | 构建一个树集,并且使用特定的比较器对其元素进行排序。Comparator 比较器没有任何数据,它只是比较方法的存放器。这种对象有时称为函数对象。函数对象通常在“运行过程”中被定义为匿名内部的一个实例 |
TreeSet (SortedSet s) | 构建一个树集,添加有序集合s 中的所有元素,并且使用与有序集合s 相同的比较器排序 |
egOne:
public class TreeSetTextOne {
public static void main(String[] args) {
Set set=new TreeSet();
set.add("a");
set.add("b");
set.add("c");
System.out.println("循环打印输出:");
for (Iterator it=set.iterator(); it.hasNext();) {
System.out.println(it.next());
}
}
}
egTwo:
如果要用 TreeSet 存储 一个类的话,这个类是不可排序的的话,就要该类继承Comparable接口,然后重写接口中 compareTo(Object o) 方法。
public class TextTreeSet {
public static void main(String[] args) {
TreeSet trs=new TreeSet();
trs.add(new Student("小白",20));
trs.add(new Student("小白",22));
trs.add(new Student("小白",22));
trs.add(new Student("小红",22));
System.out.println(trs);
}
}
/*
Studen类t继承接口Comparabl
*/
class Student implements Comparable{
private String name;
private int age;
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;
}
public Student(String name, int age) {
super();
this.name = name;
this.age = age;
}
public Student() {
super();
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
}
@Override
public int compareTo(Object obj) {
/*
如果obj 类型和Student类型不一样抛出异常提示:对象不匹配哦....
*/
if(!(obj instanceof Student)){
throw new RuntimeException("对象不匹配哦....");
}
Student stu=(Student)obj; //强制转换一下下(转换成Student类)
if(this.getAge()>stu.getAge()){
return -1;
}else if(this.getAge()<stu.getAge()){
return 1;
}
if(this.getAge()==stu.getAge()){
return this.getName().compareTo(stu.getName());
}
return 0;
/* if(this.getName()==stu.getName()){
return this.getName().compareTo(stu.getName());
}else{
return this.getName().compareTo(stu.getName());
}
*/
}
}