
Java学习
文章平均质量分 81
Java的个人学习笔记
情、狠现实
小坤很困,快来写代码提神!
展开
-
JUC并发编程 进阶
Java JUC 并发编程进阶 笔记 1.线程与进程 2.Lock锁 3.8锁现象 4.多线程安全的集合 5.Callable 6.读写锁 7.阻塞队列 8.线程池 9.函数式接口 10.Stream流式计算 11.ForkJoin 12.异步回调 13.JMM 14.Volatile 15.单例模式深究 16.CAS 17.原子引用 18.常见锁原创 2022-03-06 11:45:54 · 994 阅读 · 0 评论 -
Java集合 Hashtable
Hashtable 简介 HashTable继承Dictionary类,实现Map接口。 其中Dictionary类是任何可将键映射到相应值的类(如 Hashtable)的抽象父类。 在任何一个 Dictionary 对象中,每个键至多与一个值相关联。Map是**“key-value键值对”**接口。 每个键和每个值都是一个对象。 HashTable采用"拉链法"实现哈希表,它定义了几个重要的参数:table、count、threshold、loadFactor、modCount。 tab原创 2021-11-06 11:31:47 · 154 阅读 · 0 评论 -
Java集合 HashMap 源码分析
HashMap 介绍 HashMap是Map接口使用频率最高的实现类 HashMap是以key-val对的方式来存储数据(HashMap$Node) key不能重复,但是值可以重复,允许使用null键和null值 如果添加相同的key,则会覆盖原来的key-val,等同于修改(key不会替换,val会替换) 与HashSet一样不保证映射的顺序,因为底层是以hash表的方式来存储的(jdk8 数组+链表+红黑树) HashMap没有实现同步,线程不安全(线程安全的是ConcurrentHashMap) 扩原创 2021-11-04 22:18:28 · 274 阅读 · 0 评论 -
Java 集合 Map接口
Java 集合 Map接口 Map接口 特点(JDK8) Map与Collection并列存在。用于保存具有映射关系的数据:Key-Value Map中的key和value可以使任何引用类型的数据,会封装到HashMap$Node对象中 Map中的key不允许重复,愿意和HashSet一样 Map中的value可以重复 Map的key可以为null,value也可以为null,注意key的null只能有一个 常用String类作为Map的key key和value之间存在单向一对一关系,即通过指定的key原创 2021-11-04 20:15:53 · 131 阅读 · 0 评论 -
Java 集合 LinkedHashSet
Java 集合 LinkedHashSet LinkedHashSet 介绍 LinkedHashSet是HashSet的子类 LinkedHashSet底层是一个LinkedHashMap,底层维护了一个 数组+双向链表 LinkedHashSet根据元素的hashCode值来决定元素的存储位置,同时使用链表维护元素的次序,这使得元素看起来是以插入顺序保存的 LinkedHashSet不允许添加重复元素 构造方法 LinkedHashSet() 构造一个具有默认初始容量(16)和负载因子(0原创 2021-11-04 16:26:23 · 254 阅读 · 0 评论 -
Java 集合HashSet 源码解析
Java 集合 HashSet 源码解析 HashSet 介绍 HashSet实现了Set接口 HashSet实际上是HashMap public HashSet(){ map = new HashMap<>(); } 可以存放null值,但是只能有一个null HashSet不保证元素是有序的,取决于hash后,再确定索引的结果 不能有重复元素/对象 构造方法 HashSet() 构造一个新的空集合; 背景HashMap实例具有默认初始容量(16)原创 2021-11-04 11:44:51 · 167 阅读 · 0 评论 -
Java集合 List接口
Java集合 List接口 List接口 特性 List接口是Collection接口的子接口 List集合类中元素有序(即添加顺序与取出顺序一致),且可以重复! List集合汇总的每个元素都有其对应的顺序索引,即支持索引 List容器中的每个元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素 一些接口实现类 AbstractList AbstractSequentialList ArrayList AttributeList CopyOnWriteArray原创 2021-11-03 20:10:29 · 202 阅读 · 0 评论 -
ArrayList和LinkedList比较
ArrayList和LinkedList比较 注意:都是线程不安全 底层结构 增删的效率 改查的效率 ArrayList 可变数组 较低,数组扩容 较高 LinkedList 双向链表 较高,通郭链表追加 较低 如何选择ArrayList和LinkedList 如果改查操作多,选择ArrayList 如果增删操作多,选择LinkedList 一般来说,在程序中,80%-90%都是查询,因此大部分情况下回选择ArrayList ...原创 2021-11-03 20:05:41 · 144 阅读 · 0 评论 -
Java集合 LinkedList 源码解析
Java集合 LinkedList LinkedList 介绍 LinkedList 是一个继承于AbstractSequentialList的双向链表。它也可以被当作堆栈、队列或双端队列进行操作。 LinkedList 实现 List 接口,能对它进行列表操作。 LinkedList 实现 Deque 接口,即能将LinkedList当作双端队列使用。 LinkedList 实现了Cloneable接口,即覆盖了函数clone(),能克隆。 LinkedList 实现java.io.S原创 2021-11-03 17:48:50 · 160 阅读 · 0 评论 -
Java集合 Vector 源码解析
Java集合 Vector Vector 基本介绍 Vector类的定义 public class Vector<E> extends AbstractList<E> implements List<E>,RandomAccess,Cloneable,Serializable Vector底层也是一个对象数组,protected Object[] elementData; Vector是线程同步的,即线程安全,Vector类的操作方法带有synchr原创 2021-11-03 14:52:13 · 121 阅读 · 0 评论 -
Java集合 ArrayList 源码解析
Java集合 ArrayList ArrayList 注意事项 ArrayList可以加入null,且可以加入多个 ArrayLIst是由数组来实现数据存储的 ArrayList基本等同于Vector,除了ArrayList是线程不安全(执行效率高),多线程下不建议使用ArrayList() 修改DEBUG的设置得以看见完整的数据 底层结构与源码分析 ArrayList中维护了一个Object类型的数组elementData transient Object[] elementData;//tra原创 2021-11-02 21:47:36 · 213 阅读 · 0 评论