随笔分类 -  Java容器

摘要:一、TreeMap TreeMap是一个有序的key-value集合,底层是使用红黑树实现的,因此TreeMap的基本操作的时间复杂度都是log(n)。默认是按照key的自然顺序进行排序,获取按照传入的Comparator进行排序。 上图为TreeMap的类图,可知它支持一系列的导航方法,能被克隆、 阅读全文
posted @ 2020-06-08 16:21 Qmillet 阅读(172) 评论(0) 推荐(0)
摘要:一、Set集合特点 插入无序,不可指定位置访问。且内部数据不能重复(==或equals)的元素(只要有一个为true就不能重复,重写了equals方法也算)。常用实现类有HashSet、TreeSet。 二、元素不能重复? 1.Set是如何判断元素重复? HashSet是由HashMap实现的,Ha 阅读全文
posted @ 2020-06-07 23:24 Qmillet 阅读(219) 评论(0) 推荐(0)
摘要:先来看一看老版本HashMap扩容代码: void resize(int newCapacity) { Entry[] oldTable = table; int oldCapacity = oldTable.length; ...... //创建一个新的Hash Table Entry[] new 阅读全文
posted @ 2020-06-06 12:14 Qmillet 阅读(3981) 评论(0) 推荐(0)
摘要:1 public class MyMap<K, V> { 2 private Node<K, V>[] nodes;//定义一个Node数组保存键值对 3 private int size;//逻辑长度 4 //内部静态类,用于保存key,value值 5 private static class 阅读全文
posted @ 2020-03-15 23:30 Qmillet 阅读(387) 评论(0) 推荐(0)
摘要:1. List:元素是有序的,可重复,可以根据索引操作数据 1.1 ArrayList 数据结构:数组 线程不安全 1.2 LinkedList 数据结构:双向链表 线程不安全 1.3 Vector 数据结构:数组 线程安全:Synchronized 2. Set:元素无序,不可重复,取出元素只能使 阅读全文
posted @ 2020-03-15 20:40 Qmillet 阅读(451) 评论(0) 推荐(0)
摘要:https://www.cnblogs.com/zerotomax/p/8687425.html#go0 一、数据结构 同HashMap,数组+链表+红黑树,关键属性也和HashMap相同 ConCurrentHashMap支持高并发的访问和更新,它是线程安全的 检索操作不用加锁,get方法是非阻塞 阅读全文
posted @ 2020-03-15 20:00 Qmillet 阅读(534) 评论(0) 推荐(0)
摘要:一、HashMap数据结构 JDK 1.7 采用数组 + 链表实现。 JDK 1.8 采用数组 + 链表 + 红黑树实现。链表采用内部类Node节点实现。红黑树采用内部类TreeNode节点实现。 二、重要参数 // 1. 容量(capacity): 必须是2的幂 & <最大容量(2的30次方),默 阅读全文
posted @ 2020-03-15 17:45 Qmillet 阅读(156) 评论(0) 推荐(0)
摘要:一、数组VS集合 1.长度 数组长度固定;集合长度可变; 2.内容 数组存储的是同一类型元素;集合可以存储不同类型的元素; 3.元素的数据类型 数组可以存储基本数据类型,也可以存储引用类型;集合只能存储引用类型(基本数据类型会自动装箱成对象) 二、Collection体系 Collection基础功 阅读全文
posted @ 2020-03-15 16:12 Qmillet 阅读(213) 评论(0) 推荐(0)