随笔分类 -  深入理解java集合框架

深入理解java集合框架
摘要:transient的作用及使用方法,官方解释为: 我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过程,只要这个类实现了Serilizable接口,这个类的所有属性和方法都会自动序列化。 然而 阅读全文
posted @ 2019-03-21 15:58 hanxue1122 阅读(458) 评论(0) 推荐(0)
摘要:Iterable接口是java 集合框架的顶级接口,实现此接口使集合对象可以通过迭代器遍历自身元素,我们可以看下它的成员方法 Iterable最早出现在JDK 1.5,开始只有iterator()一个抽象方法,需要子类来实现一个内部迭代器Iterator遍历元素.后两个方法是Java 8后新添加的, 阅读全文
posted @ 2019-03-21 11:47 hanxue1122 阅读(202) 评论(0) 推荐(0)
摘要:HashTable是什么 HashTable跟HashMap一样,同样是链表散列的数据结构,从源码中我们可以看出,Hashtable 继承于Dictionary类,实现了Map, Cloneable,Serializable接口 Hashtable成员变量 Hashtable构造方法 Hashtab 阅读全文
posted @ 2018-09-05 19:04 hanxue1122 阅读(194) 评论(0) 推荐(0)
摘要:linked构造函数 1、LinkedList(); 构造一个空列表的集合 2、 阅读全文
posted @ 2018-08-26 22:22 hanxue1122 阅读(202) 评论(0) 推荐(0)
摘要:Arraylist集合 添加方法 1、add(E e) 向集合中添加元素 2、add(int index ,E e) 向集合的指定索引处添加元素 3、addAll(Collection< ? extends E> c) 添加集合 4、addAll(int index, Collection<? ex 阅读全文
posted @ 2018-08-26 16:18 hanxue1122 阅读(295) 评论(0) 推荐(0)
摘要:ArrayList有三个构造方法 ArrayList有三个常量 1、private transient Object[] elementData (数组); 2、private int size (元素个数) 1、ArrayList(int initialCapacity); 构造一个初始容量的集合 阅读全文
posted @ 2018-08-26 15:33 hanxue1122 阅读(1247) 评论(0) 推荐(0)
摘要:深入理解HaspMap死循环问题 由于在公司项目中偶尔会遇到HashMap死循环造成CPU100%,重启后问题消失,隔一段时间又会反复出现。今天在这里来仔细剖析下多线程情况下HashMap所带来的问题: 1、多线程put操作后,get操作导致死循环。 2、多线程put非null元素后,get操作得到 阅读全文
posted @ 2018-08-25 12:56 hanxue1122 阅读(212) 评论(0) 推荐(0)
摘要:日常开发中,保存一组数据使用的最多的就是 ArrayList, 其次就是 LinkedList 了。 我们知道 ArrayList 是以数组实现的,遍历时很快,但是插入、删除时都需要移动后面的元素,效率略差些 而LinkedList 是以链表实现的,插入、删除时只需要改变前后两个节点指针指向即可,省 阅读全文
posted @ 2018-08-25 12:38 hanxue1122 阅读(244) 评论(0) 推荐(0)
摘要:ArrayList简介 ArrayLIst是动态数组,用MSDN的说法就是Array的复杂版本,它提供了动态的增加和减少元素,实现了Collection和List接口,可以灵活的设置数组的大小,要注意ArrayLIst并不是线程安全的。因此一般建议在单线程中使用Arraylist数组 ArrayLi 阅读全文
posted @ 2018-08-25 11:57 hanxue1122 阅读(174) 评论(0) 推荐(0)
摘要:一、概念 TreeMap是基于红黑树结构实现的一种Map,要分析TreeMap的实现首先就要对红黑树有所了解。 要了解什么是红黑树,就要了解它的存在主要是为了解决什么问题,对比其他数据结构比如数组,链表,Hash表等树这种结构又有什么优点。 1.二叉查询树、红黑树介绍、 1.数组,优点:(1)随机访 阅读全文
posted @ 2018-03-01 10:43 hanxue1122 阅读(387) 评论(1) 推荐(0)
摘要:一、HashMap概述 HashMap基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了不同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 值得注意 阅读全文
posted @ 2018-02-28 18:02 hanxue1122 阅读(284) 评论(0) 推荐(0)
摘要:一、源码解析 LinkedList是一个继承于AbstractSequentialList的双向链表,它可以被当做堆栈、队列或双端队列进行操作 LinkedList实现了List接口,能够对它进行队列操作 LinkedList实现了Deque接口,即能将LinkedList当成双端队列使用 Link 阅读全文
posted @ 2018-02-28 15:59 hanxue1122 阅读(1025) 评论(0) 推荐(0)
摘要:一、HasnSet概述 Hashset实现set接口,由哈希表(实际上是一个HashMap实例)支持。它不保证set的迭代顺序。特别是它不保证该顺序恒久不变。此类允许使用Null元素 一、HasnSet的实现 对于HashSet而言,它是基于HashMap实现的,HashSet底层使用HashMap 阅读全文
posted @ 2018-02-28 15:11 hanxue1122 阅读(2590) 评论(0) 推荐(0)
摘要:一、ArrayList概述 ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存 ArrayList不是线程安全的,只能用在单线程环境下,多线程环境下可以考虑用Collections.synchronizedList(List l)函数返回 阅读全文
posted @ 2018-02-28 14:39 hanxue1122 阅读(551) 评论(0) 推荐(0)