数据容器(集合)
数据容器(集合)
大·风
想起来什么就写点什么。
展开
-
JAVA常用数据容器——总览
JAVA中的数据容器java提供了多种数据集合工具,我们通过这些工具,根据我们的业务需求实现了不同的数据操作。从接口上来看,JAVA提供的数据集合主要涉及两部分一部分是java.util.Collection的实现类。一部分是java.util.Map的实现类个人习惯对于我们常说的数据结构(线性表、对、树、栈、图、散列)更像是JAVA中的接口,只是定义了相关规则,并不存在相关实现。而J...原创 2019-09-29 00:28:35 · 1022 阅读 · 0 评论 -
JAVA常用数据容器——List(LinkedList、ArrayList)
因为一些失误,在这篇文章使用的是JDK11的代码进行分析的。JDK11和JDK8相比原理并没有太多改变,但是代码倒是简洁不少。LinkedList经典的双链表结构, 适用于乱序插入, 删除. 指定序列操作则性能不如ArrayList, 这也是其数据结构决定的关于链表可以查看链表、栈、队列java实现原理public class LinkedList<E> extends ...原创 2019-09-29 00:28:58 · 473 阅读 · 0 评论 -
JAVA常用数据结构——Map(HashMap、LinkedHashMap、TreeMap)
HashMap最常用的哈希表, 内部通过数组 + 单链表的方式实现。关于哈希表可以查看数据结构基础——数组、散列表java实现原理public class HashMap<K, V> extends AbstractMap<K, V> implements Map<K, V>, Cloneable, Serializable { private ...原创 2019-09-29 22:04:53 · 555 阅读 · 0 评论 -
JAVA常用数据结构——Set(HashSet、LinkedHashSet、TreeSet)
HashSet要了解HashSet之前最好先了解HashMap,因为看下源代码就可以发现所谓的Set借口下的实现,底层都是基于Map来保存数据的。JAVA常用数据结构——Map(HashMap、LinkedHashMap、TreeMap)java实现原理public class HashSet<E> extends AbstractSet<E> im...原创 2019-09-30 18:40:46 · 865 阅读 · 0 评论 -
JAVA队列介绍(Queue)——ArrayBlockingQueue和LinkedBlockingQueue
ArrayBlockingQueueArrayBlockingQueue是采用数组实现的有界阻塞线程安全队列。如果向已满的队列继续塞入元素,将导致当前的线程阻塞。如果向空队列获取元素,那么将导致当前线程阻塞。java实现原理public class ArrayBlockingQueue<E> extends AbstractQueue<E> imple...原创 2019-10-01 21:31:56 · 702 阅读 · 0 评论 -
JAVA队列介绍(Queue)——PriorityBlockingQueue
PriorityBlockingQueuePriorityBlockingQueue 支持优先级排序的无界阻塞队列, 默认情况下元素采取自然顺序升序排列。也可以自定义类实现 compareTo()方法来指定元素排序规则,或者初始化 PriorityBlockingQueue 时,指定构造参数 Comparator 来对元素进行排序。java实现原理public class PriorityB...原创 2019-10-02 22:11:12 · 759 阅读 · 0 评论 -
JAVA队列介绍(Queue)——DelayQueue(java延迟队列)
DelayQueueDelayQueue是一个支持延时获取元素的无界阻塞队列java实现原理public class DelayQueue<E extends Delayed> extends AbstractQueue<E> implements BlockingQueue<E> { private final transient Re...原创 2019-10-04 23:17:45 · 1145 阅读 · 0 评论 -
JAVA队列介绍(Queue)——LinkedTransferQueue
LinkedTransferQueueLinkedTransferQueue 链表实现的无界阻塞队列。相对于其他阻塞队列,LinkedTransferQueue多了tryTransfer和transfer方法。其使用一种预占的模式,当消费者获取元素的时候如果队列不为空则直接获取元素,如果队列为空,则生产一个null的元素,然后在这个节点上等待。当有新的线程添加元素的时候,如果发现有null的元...原创 2019-10-08 00:35:53 · 520 阅读 · 0 评论