全屏

9.5.3 TreeSet的使用和底层实现


【专业IT培训机构,真正零首付入学www.bjsxt.com


      TreeSet底层实际是用TreeMap实现的,内部维持了一个简化版的TreeMap,通过key来存储Set的元素。 TreeSet内部需要对存储的元素进行排序,因此,我们对应的类需要实现Comparable接口。这样,才能根据compareTo()方法比较对象之间的大小,才能进行内部排序。

【示例9-10】TreeSet和Comparable接口的使用

public class Test {
	public static void main(String[] args) {
		User u1 = new User(1001, "高淇", 18);
		User u2 = new User(2001, "高希希", 5);
		Set<User> set = new TreeSet<User>();
		set.add(u1);
		set.add(u2);
	}
}

class User implements Comparable<User> {
	int id;
	String uname;
	int age;

	public User(int id, String uname, int age) {
		this.id = id;
		this.uname = uname;
		this.age = age;
	}
	/**
	 * 返回0 表示 this == obj 返回正数表示 this > obj 返回负数表示 this < obj
	 */
	@Override
	public int compareTo(User o) {
		if (this.id > o.id) {
			return 1;
		} else if (this.id < o.id) {
			return -1;
		} else {
			return 0;
		}
	}
}

使用TreeSet要点:

      (1) 由于是二叉树,需要对元素做内部排序。 如果要放入TreeSet中的类没有实现Comparable接口,则会抛出异常:java.lang.ClassCastException。

      (2) TreeSet中不能放入null元素。

分类导航
点击按住视频可拖动

缩小

关闭

  • 正在学习
  • 北京总部地址:北京市海淀区西三旗街道建材城西路中腾建华商务大厦东侧二层尚学堂
  • 咨询电话:400-009-1906 010-56233821
  • Copyright 2007-2015 北京尚学堂科技有限公司
  • 京ICP备13018289号-1 京公网安备11010802015183