Java学习笔记之集合(九):TreeMap的存储原理
来源:互联网 发布:中国男人 外国 知乎 编辑:程序博客网 时间:2024/06/05 09:26
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;}@Overridepublic String toString() {return "[name=" + name + ", salary=" + salary + "]";}// 自定义比较规则@Overridepublic int compareTo(Emp o) {return this.salary - o.salary;}}// 自定义比较器class MyComparator implements Comparator<Emp>{@Overridepublic int compare(Emp o1, Emp o2) {return o1.salary - o2.salary;}}public class Demo3 {// TreeMap注意事项2:实现Comparable接口;@Testpublic 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接口(自定义比较器)@Testpublic 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);}}
阅读全文
0 0
- Java学习笔记之集合(九):TreeMap的存储原理
- Java学习笔记之集合(八):HashMap的存储原理
- 深入java集合源码学习系列:TreeMap的实现原理
- java 集合学习笔记4-HashMap TreeMap
- Java集合之TreeMap
- java集合之TreeMap
- Java集合框架之TreeMap的排序
- 集合Map,HashMap、TreeMap+JAVA学习笔记-DAY18
- Java学习笔记之集合(三):ArrayList集合的原理和特点
- Java学习笔记之集合(五):HashSet集合的实现原理
- Java学习笔记之集合(六):TreeSet集合的实现原理
- java集合类之TreeMap
- Java集合框架之TreeMap
- Java学习之TreeMap
- Java 集合:TreeMap工作原理及实现
- java集合系列——Map之TreeMap介绍(九)
- Java集合源码学习(22)_NavigableMap接口的实现TreeMap
- JAVA学习【8】集合框架HashMap、TreeMap的基本用法
- c++内存问题——堆、栈
- python中外置模块文件的位置
- 开发工具:Idea 字符集配置,修改 encodings.xml 文件
- leetcode4 Median of Two Sorted Arrays
- 开通博客
- Java学习笔记之集合(九):TreeMap的存储原理
- mina框架-------NioSocketAcceptor和NioSocketConnector对象
- java8之接口的默认方法和lambda表达式小结(一)
- 简单的固定定位
- 个人容易忘的知识点罗列(实时更新)
- cntlm for linux 设置
- iOS开发
- Android中判断详细的网络
- 如何减少http请求