集合框架-TreeSet的add()方法的源码解析
来源:互联网 发布:杭州正规淘宝运营公司 编辑:程序博客网 时间:2024/05/16 04:09
interface Collection {...}interface Set extends Collection {...}interface NavigableMap {}class TreeMap implements NavigableMap {public V put(K key, V value) { Entry<K,V> t = root; if (t == null) { compare(key, key); // type (and possibly null) check root = new Entry<>(key, value, null); size = 1; modCount++; return null; } int cmp; Entry<K,V> parent; // split comparator and comparable paths Comparator<? super K> cpr = comparator; if (cpr != null) { do { parent = t; cmp = cpr.compare(key, t.key); if (cmp < 0) t = t.left; else if (cmp > 0) t = t.right; else return t.setValue(value); } while (t != null); } else { if (key == null) throw new NullPointerException(); Comparable<? super K> k = (Comparable<? super K>) key; do { parent = t; cmp = k.compareTo(t.key); if (cmp < 0) t = t.left; else if (cmp > 0) t = t.right; else return t.setValue(value); } while (t != null); } Entry<K,V> e = new Entry<>(key, value, parent); if (cmp < 0) parent.left = e; else parent.right = e; fixAfterInsertion(e); size++; modCount++; return null; }}class TreeSet implements Set {private transient NavigableMap<E,Object> m;public TreeSet() { this(new TreeMap<E,Object>());}public boolean add(E e) { return m.put(e, PRESENT)==null; }}/*真正的比较是依赖于元素的compareTo()方法,而这个方法是定义在 Comparable里面的。所以,你要想重写该方法,就必须实现Comparable接口。这个接口表示的就是自然排序。*/
0 0
- 集合框架-TreeSet的add()方法的源码解析
- TreeSet的add()方法的源码解析
- 集合框架_TreeSet的add()方法源码再次解读和TreeSet对元素排序的总结
- 集合框架_HashSet集合的add()方法的源码
- 集合框架_HashSet集合的add()方法的源码
- 集合框架-HashSet集合的add()方法的源码
- Java集合框架源码解析-TreeSet
- 集合框架_ArrayList集合的toString()方法源码解析
- 集合框架-ArrayList集合的toString()方法源码解析
- HashSet集合的add()方法的源码
- 【集合详解】TreeSet源码解析
- TreeSet集合框架的使用练习
- java--集合框架的Hashset和Treeset
- java集合框架的练习之TreeSet集合的运用
- 集合的toString()方法源码解析
- 集合的toString()方法源码解析
- 集合TreeSet的使用
- java集合框架TreeSet的使用和HashSet的使用
- AtCoder Beginner Contest 058 D井井井 / ###【“贡献”】
- javaIO——基础
- MySQL
- Cannot create PoolableConnectionFactory (Access denied for user 'root'@'localhost' (using password:
- 模拟登陆爬取知乎
- 集合框架-TreeSet的add()方法的源码解析
- 在阿里云 CentOS 服务器(ECS)上搭建 nginx + mysql + php-fpm&n
- webpack学习笔记
- Inxi:一个功能强大的获取 Linux 系统信息的命令行工具
- Java数值计算的总结
- 2017阿里实习生招聘编程题之相亲约会
- 关于jquery的$.ajax的基本用法总结
- 189. Rotate Array
- 分类系列之感知器学习算法PLA 和 口袋算法Pocket Algorithm