java集合
文章平均质量分 55
java集合应用及原理
猿萌妹子
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
java集合之LinkedTransferQueue
LinkedTransferQueue是一个无界的阻塞队列,底层采用链表结构存储数据,遵循先进先出,但是它不采用加锁的方式来控制并发,而是采用cas和各种判断,来保证多线程的操作,它与SynchronousQueue一样,不存储元素,而是存储生产者或者消费者本身,也就是线程本身生产者和消费者直接交换手中的数据,任何一个写操作必须等到一个读操作(反之亦然),交换成功才是成功,否则就阻塞或者返回失败(取决于调用的方法),队列中的元素必须是同一类角色,要么是生产者,要么是消费者。原创 2024-10-21 21:39:20 · 426 阅读 · 0 评论 -
java集合之DelayedWorkQueue
DelayedWorkQueue 是一个定制的阻塞队列,专门用来存放RunnableScheduledFutures任务,它是有界的,有最大容量,一般达不到,虽然它是队列,它并不能满足先进先出规则,它是按优先级出队,它会将插入的数据进行排序,按优先级出队,底层采用数组实现的二叉堆,它是为定时线程池服务的,它会根据提交进来的任务的延迟时间进行排序,始终将距离当前时间最近的任务排在前面。具体情况,我们根据源码来解释。原创 2024-10-08 22:49:01 · 315 阅读 · 0 评论 -
java集合之SynchronousQueue
SynchronousQueue也是一个队列,与其他队列不同的是,SynchronousQueue队列中,他不存储数据,存储生产者或者是消费者,让生产者和消费者直接交换手中的数据,任何一个写操作必须等到一个读操作(反之亦然),交换成功才是成功,否则就阻塞或者返回失败(取决于调用的方法)。原创 2024-09-17 15:50:07 · 386 阅读 · 0 评论 -
java集合之DelayQueue
DelayQueue是一个无界的阻塞队列,是一个延时队列,它存储的元素必须实现Delayed接口,其中的元素只有在到期时才能被消费者取走,它底层是使用的PriorityQueue,PriorityQueue底层采用数组实现的二叉堆,队列中的元素根据到期时间进行排序,剩余时间最少的放在堆顶。因为它几乎趋近于无界,因为底层数组的最大容量限制是Int最大值减8,所以生产者往队列添加元素的时候不会出现阻塞的情况,队列满了就进行扩容消费者会阻塞。原创 2024-08-02 07:33:18 · 528 阅读 · 0 评论 -
java集合之PriorityBlockingQueue
PriorityBlockingQueue是一个阻塞队列,它是有界的,有最大容量,一般达不到,虽然它是队列,它并不能满足先进先出规则,它是按优先级出队,它会将插入的数据进行排序,按优先级出队,底层采用数组实现的二叉堆,所以当我们往队列中添加自定义对象时,自定义对象需要实现Comparable接口,也就是需要告诉队列,你的数据需要按什么规则进行排序。具体情况,我们根据源码来解释。原创 2024-07-28 16:05:05 · 529 阅读 · 0 评论 -
java集合之LinkedBlockingQueue
1、LinkedBlockingQueue属于Queue分支下的一个子类,与ArrayBlockingQueue不同,它底层采用链表的方式来存放数据,不过也可以给它设置容量,若不设置容量,默认是int的最大值,正常来说元素个数是达不到这个值的,可能先出现oom2、由于底层采用的是单链表,只能从尾部添加,从头部获取。原创 2024-07-23 21:51:02 · 447 阅读 · 0 评论 -
java集合之ArrayBlockingQueue
ArrayBlockingQueue属于BlockingQueue分支下的一个子类,他是一个阻塞队列,通过名字可知,它底层是采用的数组结构来存放数据,既然是数组,那么长度就是固定的,且它是一个阻塞队列,那么就会涉及到一些锁相关的内容,我们从具体的方法中去了解具体的实现。原创 2024-07-21 22:05:41 · 517 阅读 · 0 评论 -
java集合之BlockingQueue
什么是阻塞队列,首先它是一个队列(或者说集合),它是用来存放数据的,为什么说阻塞,当多个线程往队列里面放数据或取数据的时候,如果没有先来后到,乱取乱放,数据就脏了,所以我们需要协调多个线程之间的取和放,BlockingQueue就是实现了协调多线程功能的一个队列,使用者不再关心什么时候线程该阻塞,什么时候线程该唤醒,BlockingQueue已经包办这一切。BlockingQueue是concurrent中的阻塞队列,为多线程传输数据提供了方便,使用者不需要去实现线程之间的协调。原创 2024-04-29 21:58:49 · 214 阅读 · 1 评论 -
java集合之Deque
Deque是一个线性集合,是集合框架中的queue下的一个分支,它支持在队列两端进行操作,所以也叫双端队列,大多数Deque实现对它们可能包含的元素的数量没有固定的限制,但是这个接口支持容量限制。在不违反容量限制的情况下将一个元素推到该队列表示的堆栈上(换句话说,在队列的头),如果当前没有可用空间,则抛出异常。在不违反容量限制的情况下将指定的元素插入队列的尾部,成功时返回true,如果当前没有可用的空间,则返回false。在队列尾部插入指定的元素,如果当前没有可用空间,则抛出异常。原创 2024-04-24 07:39:17 · 518 阅读 · 0 评论 -
java集合之Queue
Queue是java集合中的一个分支叫队列,队列从操作上来讲可以分为单向队列和双端队列(Deque下的实现类),单向队列只能单向操作,比如只能从尾部添加元素,头部获取元素,双向队列就比较灵活,既可以从头部添加,头部获取,也可以从尾部添加,尾部获取,除此外Queue也分为阻塞队列以及非阻塞队列,阻塞队列一般用于多线程模式下。在不违反容量限制的情况下插入指定的元素,成功时返回true,如果当前没有可用的空间,则抛出一个非法的状态异常。检索但不删除此队列的头,如果此队列为空,则返回null。原创 2024-04-19 07:31:45 · 293 阅读 · 0 评论 -
java集合之LinkedList
LinkedList实现了List和Deque,说明它既有List的特性,也有Deque的特性,它既然是一个容器,那么自然就是用来存放数据的,它与ArrayList又有什么区别呢,容量是多少,底层用什么结构来存放数据,有没有扩容等等,下面我们带着问题来看看。原创 2024-02-21 21:36:58 · 317 阅读 · 0 评论 -
java集合之Vector
Vector和前面讲的Arraylist很相似,也是一个保存数据的集合,下面我们来看看Vector的源码。原创 2024-01-09 22:27:49 · 403 阅读 · 0 评论 -
java集合之ArrayList
前面说了接口抽象类,终于走到了具体的实现类了,ArrayList,听名字带了array,那么它大概跟数组有点什么关系。那么数组有什么特点,概括来说:查找快,增删慢。原创 2024-01-04 23:02:07 · 440 阅读 · 0 评论 -
java集合之List
返回此列表中指定元素最后一次出现时的索引,如果此列表中不包含该元素,则返回-1。返回此列表中指定元素首次出现时的索引,如果此列表中不包含该元素,则返回-1。在此列表中的元素上返回一个列表迭代器,从列表中的指定位置开始。从当前集合中截取指定位置的元素,作为新的集合返回。对此列表中的元素返回一个列表迭代器。在集合中指定位置插入所有元素。在集合中指定位置插入元素。原创 2024-01-01 22:32:51 · 394 阅读 · 0 评论 -
java集合之Collection
比较o与当前集合是否相等,当然我们对集合进行比较,想必都是想判断集合当中的元素是否相等,因为比较两个集合的地址是否相等一般情况下没有什么意义,所以集合下的子类会对equals进行重写,对元素进行比较,比如:AbstractList对equals进行了重写。将指定集合中的元素添加到此集合(就是将一个集合中的所有元素添加的另一个集合中)当前集合是否包含另一个集合中的所有元素,包含则返回true,否则返回false。从此集合中删除另一个集合中的元素,成功返回true,否则返回false。返回集合中的元素个数。原创 2023-12-19 22:24:19 · 354 阅读 · 0 评论 -
java集合概览
java集合分为两大阵营,一类是Collection, 另外一类是Map,我分别将两大阵营下常用的类,以及他们的集成和实现关系表示如下:原创 2023-12-19 20:35:41 · 542 阅读 · 0 评论
分享