摘要: 最近看到一遍很好的序列化文章,因此转载过来,原文链接在文末。 序列化和反序列化是什么?实现序列化和反序列化为什么要实现Serializable接口?实现Serializable接口就算了, 为什么还要显示指定serialVersionUID的值?我要为serialVersionUID指定个什么值? 阅读全文
posted @ 2020-05-19 16:35 lanvce 阅读(378) 评论(0) 推荐(0)
摘要: 闲话 以前学习从来不看源码 ,一是怕麻烦,二是看不懂,到现在这些简单问题还是不清楚,只能被面试官吊打了,今天就拿Arralist先开刀。 一、ArrayList的数据结构 ArrayList的底层数据结构就是一个数组,数组元素的类型为Object类型,对ArrayList的所有操作底层都是基于数组的 阅读全文
posted @ 2020-05-19 14:55 lanvce 阅读(202) 评论(0) 推荐(0)
摘要: 一、LinkedList实现原理概述 LinkedList 和 ArrayList 一样,都实现了 List 接口,但其内部的数据结构有本质的不同。LinkedList 是基于链表实现的(通过名字也能区分开来),所以它的插入和删除操作比 ArrayList 更加高效。但也是由于其为基于链表的,所以随 阅读全文
posted @ 2020-05-19 14:52 lanvce 阅读(232) 评论(0) 推荐(0)
摘要: 一. HashSet概述 HashSet是Java集合Set的一个实现类,Set是一个接口,其实现类除HashSet之外,还有TreeSet,并继承了Collection,HashSet集合很常用,同时也是程序员面试时经常会被问到的知识点: 下面是结构图 二. HashSet构造 HashSet有几 阅读全文
posted @ 2020-05-19 14:44 lanvce 阅读(279) 评论(0) 推荐(0)
摘要: 简介 上一节我们说HashSet中的元素是无序的,那么有没有什么办法保证Set中的元素是有序的呢? 答案是当然可以。 我们今天的主角LinkedHashSet就有这个功能,它是怎么实现有序的呢?让我们来一起学习吧。 问题 (1)LinkedHashSet的底层使用什么存储元素? (2)LinkedH 阅读全文
posted @ 2020-05-19 14:42 lanvce 阅读(602) 评论(0) 推荐(1)
摘要: 概述 文章的内容基于JDK1.7进行分析,之所以选用这个版本,是因为1.8的有些类做了改动,增加了阅读的难度,虽然是1.7,但是对于1.8做了重大改动的内容,文章也会进行说明。 TreeSet实现了SortedSet接口,它是一个有序的集合类,TreeSet的底层是通过TreeMap实现的。Tree 阅读全文
posted @ 2020-05-19 14:41 lanvce 阅读(467) 评论(0) 推荐(0)
摘要: 回答 1.HashMap 是一种存取高效但不保证有序的常用容器。它的数据结构为“数组+链表”,是解决哈希冲突的产物,也就是我们常说的链地址法。它实现了Map 接口采用K V 键值对存储数据,并实现了浅拷贝和序列化。 HashMap 的默认初始大小为16,初始化大小必须为2的幂,最大大小为2的30次方 阅读全文
posted @ 2020-05-19 14:40 lanvce 阅读(531) 评论(0) 推荐(1)
摘要: 本文源码分析基于JDK8 1. 存储结构 HashMap 的数据存储结构是一个 Node<K,V> 数组,在(Java 7 中是 Entry<K,V> 数组,但结构相同) public class HashMap<K,V> extends AbstractMap<K,V> implements Ma 阅读全文
posted @ 2020-05-19 14:32 lanvce 阅读(218) 评论(0) 推荐(0)
//小火箭