Java集合
文章平均质量分 65
Java collection framework
elegent Developer
每周一篇博文^_^
展开
-
6. Queue
LinkedList实现了Queue和Deque接口,所以LinkedList也用来实现普通队列,相关操作有: offer, poll, peek, offerFirst, offerLast, pollFirst, pollLast, peekFirst, peekLast。优先级队列,即插入的元素不是依次从队尾插入,而是保持一定的顺序,出列时队首的先出。优先级队列底层用到了基于数组的heap树型数据结构,即大顶堆,小顶堆。阻塞队列:基于数组的阻塞队列,基于链表的阻塞队列,优先级阻塞队列等。原创 2023-11-07 18:07:06 · 167 阅读 · 0 评论 -
5.LinkedList
返回指定索引位的元素,实现也很简单,即从链表的头开始遍历到指定的索引位即可。相比ArrayList的实现,它的时间复杂度比较高是O(n)通过new LinkedList() 或 new LinkedList(Collection c)初始化一个链表。当业务中查询少,但需要频繁增,删的场合可使用LinkedList替代ArrayList。在指定索引位新增一个元素,先找到index位的结点,然后将新结点插入到指定位置即可。删除指定索引位的元素,相比ArrayList实现比较简单,不需要移位。原创 2023-11-07 13:33:34 · 309 阅读 · 0 评论 -
4. ArrayList
相比于数组它有自动扩容的优点。大部分情况下没必要为了提高一点点性能不使用ArrayList而使用原始数组。RandomAccess是一个标记接口,没有具体方法,表示该类的实例支持随机访问,即支持根据下标快速定位元素,查询时间复杂度为O(1)4)查找元素平均时间复杂度:O(n);当知道元素下标时时间复杂度是O(1)3)新增/删除元素平均时间复杂度: O(n), 因为涉及到元素的移位。1)初始化时容量默认是10, 可通过构造函数指定,达到优化效果。2)当容量不够时会自动扩容,扩容为原来的1.5倍。原创 2023-11-07 10:11:05 · 167 阅读 · 0 评论 -
3. List
Java 集合API中使用List接口来抽象化线性表,提供针对集合的CURD操作,相比Collection接口,List可以支持按索引位插入和查找,尤其当实现类是ArrayList时,可实现按下标的随机查找。原创 2023-11-06 18:20:16 · 359 阅读 · 0 评论 -
2. Collection接口
java.util.Collection是List, Set, Queue的共同父接口,它规定了所有集合类的共通方法。原创 2023-11-06 17:44:55 · 68 阅读 · 0 评论 -
1. Collection,List, Map, Queue
BlockingQueue: 阻塞队列接口,以阻塞的方式插入/取出队列元素,非常有用,常用于生产消费者模式。基于hash表的实现(拉链法, 每个bucket中出现hash碰撞时使用链表串联,但为了效率,当链表元素大于8时,升级为red-black tree)继承自HashMap, 内部维护了一个链表,用于保存元素的插入顺序(或访问顺序),使用迭代器时可按顺序迭代。即优先级队列,保存队列元素的顺序不是按照插入的顺序,而是按照优先级排序。LinkedList特点:底层双向链表实现,不支持随机查找,增删快。原创 2023-11-06 14:58:16 · 343 阅读 · 0 评论