Java学习笔记之集合(九):TreeMap的存储原理
2017-09-27 10:50
387 查看
package com.collection.map; import java.util.Comparator; import java.util.TreeMap; import org.junit.Test; /* 双列集合体系: ------| Map:如果是实现了Map接口的集合类,具备的特点:存储的数据都是以键值对的方式存在的,键不可重复,值可以重复; ---------| HashMap:底层也是基于哈希表实现的;此处的哈希表存在两列,值列和键列; ---------| TreeMap:TreeMap也是基于红黑树(二叉树)数据结构实现的;特点:会对元素的键进行排序存储; TreeMap注意事项: 1、往TreeMap添加元素的时候,如果元素的键具备自然顺序,那么就按照键的自然顺序特性进行排序存储; 2、往TreeMap添加元素的时候,如果元素的键不具备自然顺序,那么键所属的类就必须要实现Comparable接口, 并重写 compareTo()方法,将自定义比较规则定义在该方法中; 3、往TreeMap添加元素的时候,如果元素的键不具备自然顺序,而且键所属的类也没有实现Comparable接口, 那么就必须在创建TreeMap对象的时候,传入一个比较器,并且比较器中定义了比较规则; 4、如果同时实现了Comparable接口和Comparator接口,则比较规则以Comparator为准; ---------| HashTable:底层也是依赖哈希表实现的,和HashMap一样,但是他是线程安全的,效率较低,已经被淘汰了; */ class Emp implements Comparable<Emp>{ String name; int salary; public Emp(String name, int salary) { this.name = name; this.salary = salary; } @Override public String toString() { return "[name=" + name + ", salary=" + salary + "]"; } // 自定义比较规则 @Override public int compareTo(Emp o) { return this.salary - o.salary; } } // 自定义比较器 class MyComparator implements Comparator<Emp>{ @Override public int compare(Emp o1, Emp o2) { return o1.salary - o2.salary; } } public class Demo3 { // TreeMap注意事项2:实现Comparable接口; @Test public void test1() { TreeMap<Emp, String> map = new TreeMap<Emp, String>(); map.put(new Emp("张三", 1000), "001"); map.put(new Emp("李四", 2000), "002"); map.put(new Emp("王五", 3000), "003"); System.out.println("集合中的元素:" + map); } // TreeMap注意事项3:实现Comparator接口(自定义比较器) @Test public void test2() { // 创建自定义比较器对象 MyComparator comparator = new MyComparator(); // 创建TreeMap对象的时候,传入自定义比较器 TreeMap<Emp, String> map = new TreeMap<Emp, String>(comparator); map.put(new Emp("张三", 1000), "001"); map.put(new Emp("李四", 2000), "002"); map.put(new Emp("王五", 3000), "003"); System.out.println("集合中的元素:" + map); } }
相关文章推荐
- Java学习笔记之集合(八):HashMap的存储原理
- Java学习笔记之集合(三):ArrayList集合的原理和特点
- Java学习笔记之集合(六):TreeSet集合的实现原理
- 集合Map,HashMap、TreeMap+JAVA学习笔记-DAY18
- Java学习笔记之集合(五):HashSet集合的实现原理
- 0015 Java学习笔记-集合-TreeMap集合
- java 集合学习笔记4-HashMap TreeMap
- Java集合学习笔记
- 深入Java集合学习系列:LinkedHashSet的实现原理
- java集合框架学习—ArrayList的实现原理
- 【Java 学习笔记】 TreeMap排序,Comparator的定义
- (JAVA SE 学习笔记)Java.SE.第011讲.面向对象之封装.续二(对一些原理机制进行了详细的解释,适合初学者学习)
- 深入Java集合学习系列:LinkedHashMap的实现原理
- 黑马程序员---- Java学习笔记:1.异常 2.集合
- 深入Java集合学习系列:HashSet的实现原理
- 深入Java集合学习系列:ArrayList的实现原理
- {传智播客} (学习笔记)--Java调用存储过程实现Oracle数据库分页
- java集合框架学习—HashSet的实现原理
- JAVA学习笔记--集合
- 深入Java集合学习系列:HashSet的实现原理