
【java集合篇】
天青色的烟雨.
本博客只为加深自身知识体系,不为任何商业用途呦呦呦!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
JAVA栈(Stack)集合关系图
集合关系图JAVA 堆栈类(Stack)的使用栈在Java中是一种数据结构,用来存储数据,我们都知道Java自带了一种数据结构数组,可以直接用,而栈不同于数组,它是建立在数组上的一种数据结构(也有可能建立在链表的基础上,这个后面说),它存储数据的方式是先进后出也就是FILO(first in last out)策略的集合类型。堆栈是一种 “后进先出” (LIFO) 的数据结构, 只...原创 2019-03-15 09:27:28 · 1001 阅读 · 0 评论 -
ConcurrentHashMap原理分析(JDK1.7和1.8)
一、背景:线程不安全的HashMap因为多线程环境下,使用Hashmap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMap。参考上篇博文:HashMap多线程下发生死循环的原因效率低下的HashTable容器HashTable容器使用synchronized来保证线程安全,但在线程竞争激烈的情况下HashTable的效...原创 2019-03-16 09:49:11 · 413 阅读 · 0 评论 -
HashMap实现原理及源码分析
哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表,而HashMap的实现原理也常常出现在各类的面试题中,重要性可见一斑。本文会对java集合框架中的对应实现HashMap的实现原理进行讲解,然后会对JDK7的HashMap源码进行分析。一、什么是哈希表...原创 2019-03-16 10:26:00 · 234 阅读 · 0 评论 -
HashMap多线程下发生死循环的原因
由于在公司项目中偶尔会遇到HashMap死循环造成CPU100%,重启后问题消失,隔一段时间又会反复出现。今天在这里来仔细剖析下多线程情况下HashMap所带来的问题:1、多线程put操作后,get操作导致死循环。2、多线程put非null元素后,get操作得到null值。3、多线程put操作,导致元素丢失。死循环场景重现下面我用一段简单的DEMO模拟HashMap死循环:...转载 2019-04-02 16:10:05 · 713 阅读 · 0 评论 -
SortedSet接口和示例
SortedSet是集合框架中的接口。此接口扩展了Set并提供其元素的总排序。实现此接口的Exampled类是TreeSet。SortedSet的所有元素都必须实现Comparable接口(或者被指定的Comparator接受),并且所有这些元素必须是可相互比较的(即,Mutual Comparable只是意味着两个对象互相接受作为compareTo方法的参数)SortedSet接口的方法...转载 2019-04-23 17:41:21 · 515 阅读 · 0 评论 -
BlockingQueue(阻塞队列)和ConcurrentLinkedQueue(无界非阻塞队列 )
概述 队列是一种特殊的线性表,遵循的原则就是“先入先出”。在我们日常使用中,经常会用来并发操作数据。在并发编程中,有时候需要使用线程安全的队列。如果要实现一个线程安全的队列通常有两种方式:一种是使用阻塞队列,另一种是使用线程同步锁。ArrayDueue也实现了Dueue常用方法队列常用方法 boolean offer(E e); 添加一个元素并返回tru...原创 2019-03-15 11:38:08 · 1023 阅读 · 0 评论