随笔分类 -  Java

摘要:一、简介 WeakHashMap是一种弱引用map,内部的key会存储为弱引用,当jvm gc的时候,如果这些key没有强引用存在的话,会被gc回收掉,下一次当我们操作map的时候会把对应的Entry整个删除掉,基于这种特性,WeakHashMap特别适用于缓存处理。 二、继承体系 可见,WeakH 阅读全文
posted @ 2022-05-18 10:47 夏尔_717 阅读(23) 评论(0) 推荐(0) 编辑
摘要:一、概述 fail-fast机制是java集合中的一种错误机制。首先我们看下维基百科中关于fail-fast的解释: In systems design, a fail-fast system is one which immediately reports at its interface any 阅读全文
posted @ 2022-05-17 14:29 夏尔_717 阅读(164) 评论(0) 推荐(0) 编辑
摘要:一、概述 IdentityHashMap利用哈希表实现Map接口,比较键(和值)时使用引用相等性代替对象相等性。换句话说,在IdentityHashMap中,当且仅当(k1==k2)时,才认为两个键k1和k2相等(在正常Map实现(如HashMap)中,当且仅当满足下列条件时才认为两个键k1和k2相 阅读全文
posted @ 2022-05-15 13:15 夏尔_717 阅读(61) 评论(0) 推荐(0) 编辑
摘要:一、Enumeration 1.1 简介 Enumeration(列举),本身是一个接口,不是一个类。Enumeration接口本身不是一个数据结构。但是,对其他数据结构非常重要。Enumeration接口定义了从一个数据结构得到连续数据的手段。实现Enumeration接口的对象,它生成一系列元素 阅读全文
posted @ 2022-05-11 16:21 夏尔_717 阅读(471) 评论(0) 推荐(1) 编辑
摘要:一、简介 优先级队列,是0个或多个元素的集合,集合中的每个元素都有一个权重值,每次出队都弹出优先级最大或最小的元素。 一般来说,优先级队列使用堆来实现。 二、源码分析 2.1 主要属性 // 默认容量 private static final int DEFAULT_INITIAL_CAPACITY 阅读全文
posted @ 2022-05-10 23:31 夏尔_717 阅读(37) 评论(0) 推荐(0) 编辑
摘要:一、简介 HashSet中的元素是无序的,那么有没有什么办法保证Set中的元素是有序的呢?答案是当然可以。LinkedHashSet就有这个功能,它是怎么实现有序的呢? 二、源码分析 LinkedHashSet继承自HashSet,让我们直接上源码来看看它们有什么不同。 package java.u 阅读全文
posted @ 2022-05-09 13:46 夏尔_717 阅读(45) 评论(0) 推荐(0) 编辑
摘要:一、简介 TreeMap使用红黑树存储元素,可以保证元素按key值的大小进行遍历。 二、继承体系 TreeMap实现了Map、SortedMap、NavigableMap、Cloneable、Serializable等接口。 SortedMap规定了元素可以按key的大小来遍历,它定义了一些返回部分 阅读全文
posted @ 2022-05-09 12:35 夏尔_717 阅读(32) 评论(0) 推荐(0) 编辑
摘要:一、简介 HashSet是Set的一种实现方式,底层主要使用HashMap来确保元素不重复,允许存放null值,线程不安全。 二、案例 2.1 案例一 import java.util.HashSet; import java.util.Set; public class HashSetTest1 阅读全文
posted @ 2022-05-08 23:41 夏尔_717 阅读(45) 评论(0) 推荐(0) 编辑
摘要:一、概述 Java集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射。Collection接口又有3种子类型,List、Set和Queue,再下面是一些抽象类,最后是具体实现类,常用的有ArrayList、LinkedList 阅读全文
posted @ 2022-05-08 18:53 夏尔_717 阅读(122) 评论(0) 推荐(0) 编辑
摘要:一、简介 双端队列是一种特殊的队列,它的两端都可以进出元素,故而得名双端队列。 ArrayDeque是一种以数组方式实现的双端队列,内部使用数组进行元素存储,不允许存储null值,可以高效的进行元素查找和尾部插入取出,是用作队列、双端队列、栈的绝佳选择,性能比LinkedList还要好,它是非线程安 阅读全文
posted @ 2022-05-08 18:51 夏尔_717 阅读(74) 评论(0) 推荐(0) 编辑
摘要:一、简介 TreeSet底层是采用TreeMap实现的一种Set,所以它是有序的,同样也是非线程安全的。 二、源码分析 // TreeSet实现了NavigableSet接口,所以它是有序的 public class TreeSet<E> extends AbstractSet<E> impleme 阅读全文
posted @ 2022-05-08 18:44 夏尔_717 阅读(41) 评论(0) 推荐(0) 编辑
摘要:一、概述 LinkedList是一个继承于AbstractSequentialList的双向链表。它也可以被当作堆栈、队列或双端队列进行操作。双向链表结构,有一个头结点和一个尾结点,意味着我们可以从头开始正向遍历,或者是从尾开始逆向遍历,并且可以针对头部和尾部进行相应的操作。 LinkedList的 阅读全文
posted @ 2022-05-04 20:32 夏尔_717 阅读(50) 评论(0) 推荐(0) 编辑
摘要:一、概述 ArrayList是一种变长的集合类,基于定长数组实现,所以其可以保证在O(1)复杂度下完成随机查找操作。 ArrayList允许空值和重复元素,当往ArrayList中添加的元素数量大于其底层数组容量时,其会通过扩容机制重新生成一个更大的数组。ArrayList是非线程安全类,并 阅读全文
posted @ 2022-04-25 16:22 夏尔_717 阅读(72) 评论(0) 推荐(1) 编辑
摘要:一、概述 Jdk 8新增的Stream,配合Lambda,给操作集合(Collection)提供了极大的便利。 那么什么是Stream?Stream将要处理的元素集合看作一种流,在流的过程中,借助Stream API对流中的元素进行操作,比如:筛选、排序、聚合等。 Stream可以由数组或集合创建, 阅读全文
posted @ 2022-04-25 15:41 夏尔_717 阅读(998) 评论(0) 推荐(0) 编辑
摘要:一、简述 1.1 什么是ThreadLocal? ThreadLocal类顾名思义可以理解为线程本地变量也有叫线程本地存储。作用是提供线程内的局部变量,也就是说如果定义了一个ThreadLocal,每个线程往这个ThreadLocal中读写是线程隔离,互相之间不会影响的。它提供了一种将可变数据通过每 阅读全文
posted @ 2022-04-25 15:32 夏尔_717 阅读(210) 评论(0) 推荐(1) 编辑
摘要:一、Java反射机制是什么? 1.1 基本概念 Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为Java语言的反射机制。简单来说,反射机制指的是程序在运行时能够获取自身的信 阅读全文
posted @ 2022-04-25 15:21 夏尔_717 阅读(1514) 评论(0) 推荐(1) 编辑
摘要:一、概述 多个线程操作共享数据时,synchronized保证访问共享数据的线程安全性。synchronized是非公平锁,新来的线程有可能立即获得监视器,而在等待区中等候已久的线程可能再次等待,不过这种抢占的方式可以预防饥饿。 synchronized加锁方式的作用范围,区别实际是被加锁的对象的区 阅读全文
posted @ 2022-04-24 15:54 夏尔_717 阅读(517) 评论(0) 推荐(0) 编辑
摘要:一、作用 通常情况下我们可以通过synchronized关键字来解决可见性、有序性及原子性问题这些问题,不过synchronized是一个比较重量级的操作,对系统的性能有比较大的影响,所以,如果有其他解决方案,我们通常都避免使用synchronized来解决问题。而volatile关键字就是Java 阅读全文
posted @ 2022-04-24 15:53 夏尔_717 阅读(101) 评论(0) 推荐(0) 编辑
摘要:一、简介 HashMap采用key/value存储结构,每个key对应唯一的value,查询和修改的速度都很快,能达到O(1)的平均时间复杂度。它是非线程安全的,且不保证元素存储的顺序。 HashMap是一个散列表(数组和链表),它存储的内容是键值对(key-value)映射,能在查询和修改 阅读全文
posted @ 2022-04-22 18:02 夏尔_717 阅读(127) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示