Java集合
文章平均质量分 82
tianya3530
这个作者很懒,什么都没留下…
展开
-
图解集合1:ArrayList
前言 这个分类中,将会写写Java中的集合。集合是Java中非常重要而且基础的内容,因为任何数据必不可少的就是该数据是如何存储的,集合的作用就是以一定的方式组织、存储数据。这里写的集合,一部分是比较常见的、一部分是不常用但是我个人平时见到过的,一些比较相似的集合(比如HashMap和Hashtable)就只讲一个,突出它们之间的区别即可。 最后,要指出一点,对于集合,我认为关注的点主要转载 2017-01-03 11:37:41 · 280 阅读 · 0 评论 -
解决哈希(HASH)冲突的主要方法
虽然我们不希望发生冲突,但实际上发生冲突的可能性仍是存在的。当关键字值域远大于哈希表的长度,而且事先并不知道关键字的具体取值时。冲突就难免会发 生。另外,当关键字的实际取值大于哈希表的长度时,而且表中已装满了记录,如果插入一个新记录,不仅发生冲突,而且还会发生溢出。因此,处理冲突和溢出是 哈希技术中的两个重要问题。 1、开放定址法 用开放定址法解决冲突的做法是:当冲突发生时,转载 2016-12-29 11:44:03 · 923 阅读 · 0 评论 -
HashMap解决hash冲突的方法
在Java编程语言中,最基本的结构就是两种,一种是数组,一种是模拟指针(引用),所有的数据结构都可以用这两个基本结构构造,HashMap也一样。当程序试图将多个 key-value 放入 HashMap 中时,以如下代码片段为例: HashMap m=new HashMap(); m.put("a", "rrr1"); m.put("b", "tt9"); m.put("转载 2016-12-29 11:29:23 · 2129 阅读 · 0 评论 -
Java 集合之 Map架构
Map架构 1.Map概述: 1.1 什么是Map: Map是将键映射到值( key-value )的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。Map 接口提供三种collection 视图,允许以键集(keySet())、值集(values())或键-值映射关系集(entrySet())的形式查看某个映射的内容( 即获取键值对的内容 )。映射顺序定义为迭代器在映射的原创 2016-12-23 18:10:22 · 531 阅读 · 0 评论 -
Java 集合系列之 List总结(LinkedList, ArrayList等使用场景和性能分析)
发现这篇对于List的总结很详细而且简单明了,所以就转载过来和大家一起分享,共同学习共同进步。 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3308900.html 第1部分 List概括 先回顾一下List的框架图 (01) List 是一个接口,它继承于Collection的接口。它代表着有序的队列。 (转载 2016-12-22 12:03:34 · 651 阅读 · 0 评论 -
Java 集合之 fail-fast总结(通过ArrayList来说明fail-fast的原理、解决办法)
概要 对Iterator的fail-fast机制进行了解。内容包括: 1 fail-fast简介 2 fail-fast示例 3 fail-fast解决办法 4 fail-fast原理 5 解决fail-fast的原理 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3308762.html 1 fail-fast转载 2016-12-20 16:29:36 · 388 阅读 · 0 评论 -
图解集合6:LinkedHashMap
初识LinkedHashMap 上两篇文章讲了HashMap和HashMap在多线程下引发的问题,说明了,HashMap是一种非常常见、非常有用的集合,并且在多线程情况下使用不当会有线程安全问题。 大多数情况下,只要不涉及线程安全问题,Map基本都可以使用HashMap,不过HashMap有一个问题,就是迭代HashMap的顺序并不是HashMap放置的顺序,也就是无序。HashMap转载 2017-01-03 11:40:54 · 397 阅读 · 0 评论 -
图解集合5:不正确地使用HashMap引发死循环及元素丢失
问题引出 前一篇文章讲解了HashMap的实现原理,讲到了HashMap不是线程安全的。那么HashMap在多线程环境下又会有什么问题呢? 几个月前,公司项目的一个模块在线上运行的时候出现了死循环,死循环的代码就卡在HashMap的get方法上。尽管最终发现不是因为HashMap导致的,但却让我重视了HashMap在多线程环境下会引发死循环的这个问题,下面先用一段代码简单模拟出Hash转载 2017-01-03 11:40:16 · 733 阅读 · 1 评论 -
图解集合4:HashMap
初识HashMap 之前的List,讲了ArrayList、LinkedList,最后讲到了CopyOnWriteArrayList,就前两者而言,反映的是两种思想: (1)ArrayList以数组形式实现,顺序插入、查找快,插入、删除较慢 (2)LinkedList以链表形式实现,顺序插入、查找较慢,插入、删除方便 那么是否有一种数据结构能够结合上面两种的优点呢?有,答案转载 2017-01-03 11:39:35 · 351 阅读 · 0 评论 -
图解集合3:CopyOnWriteArrayList
初识CopyOnWriteArrayList 第一次见到CopyOnWriteArrayList,是在研究JDBC的时候,每一个数据库的Driver都是维护在一个CopyOnWriteArrayList中的,为了证明这一点,贴两段代码,第一段在com.mysql.jdbc.Driver下,也就是我们写Class.forName("...")中的内容: public class Dr转载 2017-01-03 11:38:55 · 269 阅读 · 0 评论 -
图解集合2:LinkedList
初识LinkedList 上一篇中讲解了ArrayList,本篇文章讲解一下LinkedList的实现。 LinkedList是基于链表实现的,所以先讲解一下什么是链表。链表原先是C/C++的概念,是一种线性的存储结构,意思是将要存储的数据存在一个存储单元里面,这个存储单元里面除了存放有待存储的数据以外,还存储有其下一个存储单元的地址(下一个存储单元的地址是必要的,有些存储结构还存放有转载 2017-01-03 11:38:15 · 252 阅读 · 0 评论 -
ConcurrentHashMap原理分析
1. 实现原理 ConcurrentHashMap使用分段锁技术,将数据分成一段一段的存储,然后给每一段数据配一把锁,当一个线程占用锁访问其中一个段数据的时候,其他段的数据也能被其他线程访问,能够实现真正的并发访问。如下图是ConcurrentHashMap的内部结构图: 从图中可以看到,ConcurrentHashMap内部分为很多个Segment,每一个Segment拥有一把锁,转载 2017-03-29 18:01:58 · 399 阅读 · 0 评论