TreeMap and TreeSet
来源:互联网 发布:网络语狗粮是什么意思 编辑:程序博客网 时间:2024/06/05 21:54
TreeMap与TreeSet
TreeSet底层则采用一个NavigableMap来保存TreeSet集合的元素。实际上,由于NavigableMap只是一个接口,因此底层依然是使用TreeMap来包含Set集合中的所有元素。
与HashSet完全类似的是,TreeSet里绝大部分方法都是直接调用TreeMap的方法来实现的。对于TreeMap而言,它采用一种被称为“红黑树“的排序二叉树来保存Map中每个Entry-每个Entry都被当成”红黑树“的一个节点来对待,如:
import java.util.TreeMap;
publicclass TreeMapTest {
publicstaticvoid main(String[] args){
TreeMap<String,Double> map = new TreeMap<String,Double>();
map.put("ccc", 89.0);
map.put("aaa", 80.0);
map.put("zzz", 80.0);
map.put("bbb", 89.0);
System.out.println(map);
}
}
Output:
{aaa=80.0, bbb=89.0, ccc=89.0, zzz=80.0}
当程序执行map.put(“ccc”,89.0)时,系统将直接把ccc-89.0这个Entry放入Map中,这个Entry就是该“红黑树“的根节点。接着程序执行map.put("aaa", 80.0);时,会将”aaa”80.0作为新节点添加到已有的红黑树中。以后每向TreeMap中放入一个key-value时,系统都需要将该Entry当成一个新节点,添加到已有红黑树中,通过这种方式就可保证TreeMap中所有key总是由小到达地排列。
可以形象地归纳HashMap,HashSet与TreeMap,TreeSet两类集合。HashMap,HashSet的存储集合元素的方式类似于不同的东西放在不同的位置,需要时就可以快速找到它们;TreeMap,TreeSet的存储集合元素的方式类似于体育课站队,第一个人自成一个队,以后每添加一个人都要先找到这个人应该插入的位置,然后在该位置插入此人即可。这样保证该队伍总是由矮到高排列-当然,二叉排序树的算法比“体育课站队“排序高效多了。
对于TreeMap而言,由于它底层采用“红黑树“来保存集合中的Entry,这意味着HashMap添加元素,取出元素的性能都比HashMap低。当TreeMap添加元素时,需要通过循环找到新增Entry的插入位置,因此比较消耗性能;当从TreeMap中取出元素时,需要通过循环才能找到合适的Entry,比较消耗性能。但HashMap,HashSet相比TreeMap,TreeSet的优势在于:TreeMap中的所有Entry总是按key根据指定排序规则保持有序状态,TreeSet中的所有元素总是根据指定排序规则保持有序状态。
红黑树是一种自平衡二叉查找树,树中每个节点的值,都大于或等于在它的左子树中的所有节点的值,并且小于或等于在它的右子树中的所有节点的值,这确保红黑树运行时可以快速地在树中查找和定位的所需节点。
- TreeMap and TreeSet
- Difference between TreeMap and TreeSet in Java
- TreeMap、TreeSet
- TreeMap和TreeSet
- HashSet, TreeSet, HashMap, TreeMap
- TreeMap和TreeSet
- TreeMap和TreeSet
- Java TreeMap/TreeSet
- TreeMap和TreeSet
- TreeSet与TreeMap
- TreeMap和TreeSet
- TreeSet和TreeMap排序
- java TreeMap和TreeSet
- 《java集合》--TreeMap、TreeSet
- TreeSet和TreeMap
- 数据结构复习7.Binary Search Tree, Huffman Coding, TreeMap and TreeSet
- java容器类---TreeMap、TreeSet
- TreeSet和TreeMap实现排序
- POJ 3629 Card Stacking(队列,两种方法)
- 您的服务器组件没有得到合法授权,服务器将会受限模式运行
- LayoutInflater 动态加载布局文件
- 有意思的硬件编解码问题
- zencart整合分享和登录
- TreeMap and TreeSet
- PS在图片的原始像素大小不变的情况下,把图片保存为较小的存储大小。
- 五大常用算法之三:贪心算法
- tomcat在conf/Catalina/localhost目录下配置项目路径
- POJ 3041 Asteroids 求最大匹配数
- js计时器
- zencart css没有加载 无法登录后台
- ubuntu支持exfat分区
- 五大常用算法之四:回溯法