精华内容
下载资源
问答
  • TreeSet

    2021-05-10 14:55:04
    TreeSet、TreeMapTreeSet底层TreeMap底层 TreeSet 底层 构造器把传入的比较器对象赋给了TreeSet的底层的TreeMap都属性this.comprator public TreeMap(Comparator<? super K> comparator){ this.comparator=...

    TreeSet

    底层

    1. 构造器把传入的比较器对象赋给了TreeSet的底层的TreeMap都属性this.comprator
    public TreeMap(Comparator<? super K> comparator){
    	this.comparator=comparator;
    }
    
    1. 在调用treeSet.add(“Tom”)时,底层会执行
    if(cpr!=null){//cpr就是匿名内部类(对象)
    	do{
    		parent=t;
    		cmp=cpr.compare(key,t.key);
    		//动态绑定到我们的匿名内部类(对象)compare
    		if(cmp<0)
    			t=t.left;
    		if(cmp>0)
    			t=t.right;
    		else//如果cmp=0,则认为元素相同,不能添加
    			return t.setValue(value);
    	}
    }
    

    注意:构造器返回0时,元素不可加入,假设构造器为

    return ((String) o1).length()-((String) o2).length();
    

    这时候传入"abc","def"不可同时加入,构造器认为二者是相同元素

    TreeMap

    底层

    put源码

    public V put(K key,V value){
    	Entry<K,V> t=root;
    	if(t==null){
    		compare(key,key);//并未接收返回值,只是用来检测键是否为空
    		root=new Entry<>(key,value,null);
    		size=1;
    		modCount++;
    		return null;
    	}
    	int cmp;
    	Entry<K,V> parent;
    	Comparator<?super K> cpr=comparator;
    	/*
    		同TreeSet (2)中的源码
    	*/
    }
    
    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 82,476
精华内容 32,990
关键字:

treeset