java :TreeSet 类

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());
		}
		*/		
	}
	
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值