执行顺序:父类静态块–>子类静态块–>父类非静态块–>父类构造方法–>子类非静态块–>子类构造方法–>自动装载的方法 子类和父类均加上@Service注解,将其交给spring容器管理。 父类: @Service public class Father {public static void regist(){System.out.println("Father regist");}static {System.out.println("Father中的静态块:1");}static {System.out.println("Father中的静态块:2");}public void m1(){System.out.prin...
不考虑多线程并发的情况下,容器类一般使用ArrayList、HashMap等线程不安全的类,效率更高。在并发场景下,常会用到ConcurrentHashMap、ArrayBlockingQueue等线程安全的容器类,虽然牺牲了一些效率,但却得到了安全。上面提到的线程安全容器都在java.util.concurrent包下,这个包下并发容器不少,今天全部翻出来鼓捣一下。仅做简单介绍,后续再分别深入探索。并发容器介绍ConcurrentHashMap:并发版HashMapCopyOnWriteArrayList:并...
栈和队列是一种逻辑上的数据结构,栈,遵循先进后出的原则,在编译器中得到的应用较多,例如对于括号的匹配(这也是常见的算法题目),表达式的转换等,由于我们只关心栈顶元素,并不需要直接取到栈中间的元素,队列结构类似,只关心首尾元素,十分契合我们链表的特点。 而原本java中是存在stack类的,但现在已经不推荐使用了,一般将Deque这个接口当作栈来使用,它实现的是一个双端队列。 Deque作为栈使用,常用以下方法:push(E)...
C++/Java set 容器简介 原创作者信息 @ 邮箱: chronoschen1999@gmail.com set 概述 set 作为比较经典的容器,有两个值得注意的特性,首先是不重复性,其次是无序性。不重复性即装入一个元素后,如果后面再次试图添加相同的元素,那么后面那个元素不会被添加成功;无序性可以理解为,加入元素后,内存中对各个对象存储顺序不是与添加顺序一致,而是会按照特定的要求来组织存放。 Java 中的常见 set Java 中的 Set 种类比较多,但在操...
本文纯属自己照着cs-notes的知识一个一个自己打字出来的,结合了一点点自己的看法,详细请看原文: cs-notes Java容器文章目录 概览CollectionSetListQueue Map容器中的设计模式:源码分析:Arraylist概览 源码分析:ArrayListVectorCopyOnWriteArrayList LinkedList:HashMapLinkedHashMapWeakHashMap概览 容器主要包括Collection和Map两种,Collection存储着对象的集合,而Map存储着键值对(两个对象)的映射表。 Collection可以...
文章目录 并发容器1 阻塞队列1.1 ArrayBlockingQueue1.2 LinkedBlockingQueue1.3 DelayQueue1.4 PriorityBlockingQueue1.5 SynchronousQueue 2 并发Map2.1 HashTable2.2 ConcurrentHashMap2.2.1 JDK 1.72.2.2 JDK 1.8 2.3 ConcurrentSkipListMap 3 并发List3.1 Vector 4 并发Set4.1 ConcurrentSkipListSet 5 并发Queue5.1 ConcurrentLinkedQueue5.2 ConcurrentLinkedDeque 6 CopyOnWrite6.1 CopyOnWriteArrayList6.2 CopyOnWriteAr...
并发容器简介 因为同步容器将几乎所有方法添加的synchronized进行同步,这样保证了线程的安全性,但代价就是严重降低了并发性能,当多个线程竞争容器时,吞吐量严重降低。 Java5.0开始针对多线程并发访问重新设计,提供了并发性能较好的并发容器,引入了java.util.concurrent包。 并发容器如下: ConcurrentHashMap 对应的非并发容器:HashMap目标:代替Hashtable、synchronizedMap,支持复合操作原理:JDK6中采用一种更加细粒度的...
你真的了解for循环遍历么今天讲的for循环主要是针对Java语言的JDK1.8,在编程过程中或多或少的遇到过for循环遍历,比如:List、Set、Map等等集合容器,有时候碰到需要对集合容器数据进行相应的增删改操作的时候,都会纠结一番到底会不会出现修改问题呢,如何遍历会更好呢。等看完这篇你会觉得真的不一样了。 日常遍历的几种方式首先我们先了解一下集合容器中日常遍历的几种方式:List集合遍历方式(ArrayList) // 遍历list集合pri...
HashMap 是无序的,TreeMap 可以按照 key 进行排序,那有木有 Map 是可以维护插入的顺序的呢?接下来我们一起来看下 LinkedHashMap。 LinkedHashMap 本身是继承 HashMap 的,所以它拥有 HashMap 的所有特性,再此基础上,还提供了两大特性: 按照插入顺序进行访问;实现了访问最少最先删除功能,其目的是把很久都没有访问的 key 自动删除。 LinkedHashMap 继承关系,核心成员变量,主要构造函数: // LinkedHashMap继承了HashMap p...
Java容器 1、概述Collection:存储对象的集合 1、Set1、TreeSet:基于红黑树实现,支持有序性操作。查找效率不如HashSet。查找的时间复杂度为O(logN)2、HashSet:基于哈希表HashMap实现,支持快速查找但不有序。失去了元素插入顺序信息。查找的时间复杂度为O(1)3、LinkedHashSet:内部使用双向链表维护元素的插入顺序,有HashSet的查找效率。2、List1、ArrayList:基于动态数组实现,支持随机访问。2、Vector:类似ArrayList,但是...
Java 容器都有哪些 Java 容器分为 Collection 和 Map 两大类,其下又有很多子类,如下所示: CollectionList ArrayListLinkedListVectorStack Set HashSetLinkedHashSetTreeSet MapHashMap LinkedHashMap TreeMapConcurrentHashMapHashtable Collection 和 Collections 有什么区别 Collection 是一个集合接口,它提供了对集合对象进行基本操作的通用接口方法,所有集合都是它的子类,比如 List、Set 等。Collections 是一个包装类,...
ConcurrentHashMap ConcurrentHashMap是线程安全且高效的HashMap。 在并发编程中使用HashMap可能导致程序死循环。而使用线程安全的HashTable效率又非 常低下,基于以上两个原因,便有了ConcurrentHashMap的登场机会。 线程不安全的HashMap在多线程环境下,使用HashMap进行put操作会引起死循环,导致CPU利用率接近100%,所 以在并发情况下不能使用HashMap。 HashMap在并发执行put操作时会引起死循环,是因为多线程会导致HashMap的En...
前篇:【Java容器源码】LinkedHashMap 实现 LRU 策略源码分析在上一篇文章,我们说了,LinkedHashMap 继承自 HashMap,而 HashMap 提供了基于逐桶遍历策略的 KeyIterator、ValueIterator、EntryIterator,来分别对 key、value、entry 进行迭代(可以参考这篇文章)。 而 LinkedHashMap 除了哈希表之外,还有一条贯穿了所有结点双向链表,所以,它重写了获取迭代器的三个方法,返回基于链表遍历策略的迭代器。迭代 key:LinkedHashM...
前言各种知识多而且容易遗忘,还不容易复习。最好的方法当然是自己给自己提问,不断补缺查漏,缺什么补什么。本文将各类知识归类,并将全文知识点浓缩在自问自查中,并且都写好目录,自问自查时可以随时跳转过去,方便大家系统的学习复习知识。 水平有限,有错误敬请指正 食用方法 自问自查—阅读原文—自问自查–阅读原文… 无限循环自查自问 1. ArrayList 和 vector 2. CopyOnWriteArrayList 原理 3. HashTable 4. 散列和链地址 5. Ha...
Java容器–2021面试题系列教程(附答案解析)–大白话解读–JavaPub版本前言 序言 再高大上的框架,也需要扎实的基础才能玩转,高频面试问题更是基础中的高频实战要点。 适合阅读人群 Java 学习者和爱好者,有一定工作经验的技术人,准面试官等。 阅读建议 本教程是系列教程,包含 Java 基础,JVM,容器,多线程,反射,异常,网络,对象拷贝,JavaWeb,设计模式,Spring-Spring MVC,Spring Boot / Spring Cloud,Mybatis / Hiber...