Java-集合学习
文章平均质量分 85
OkidoGreen
这个作者很懒,什么都没留下…
展开
-
为什么 HashMap 的加载因子是0.75?
为什么HashMap需要加载因子? 解决冲突有什么方法? 1. 开放定址法 2. 再哈希法 3. 建立一个公共溢出区 4. 链地址法(拉链法) 为什么HashMap加载因子一定是0.75?而不是0.8,0.6? 那么为什么不可以是0.8或者0.6呢? 有很多东西之前在学的时候没怎么注意,笔者也是在重温HashMap的时候发现有很多可以去细究的问题,最终是会回归于数学的,如HashMap的加载因子为什么是0...转载 2020-07-07 19:06:17 · 1817 阅读 · 0 评论 -
ArrayDeque
前言Java里有一个叫做Stack的类,却没有叫做Queue的类(它是个接口名字)。当需要使用栈时,Java已不推荐使用Stack,而是推荐使用更高效的ArrayDeque;既然Queue只是一个接口,当需要使用队列时也就首选ArrayDeque了(次选是LinkedList)。总体介绍要讲栈和队列,首先要讲Deque接口。Deque的含义是“double ended queue”,即转载 2017-12-03 18:41:08 · 738 阅读 · 0 评论 -
java中fail-fast 和 fail-safe的区别
原文地址:http://javahungry.blogspot.com/2014/04/fail-fast-iterator-vs-fail-safe-iterator-difference-with-example-in-java.html在我们详细讨论这两种机制的区别之前,首先得先了解并发修改。1.什么是同步修改?当一个或多个线程正在遍历一个集合Collection,此转载 2017-12-03 18:51:04 · 1081 阅读 · 0 评论 -
Java提高篇(三四)-----fail-fast机制
在JDK的Collection中我们时常会看到类似于这样的话: 例如,ArrayList:注意,迭代器的快速失败行为无法得到保证,因为一般来说,不可能对是否出现不同步并发修改做出任何硬性保证。快速失败迭代器会尽最大努力抛出 ConcurrentModificationException。因此,为提高这类迭代器的正确性而编写一个依赖于此异常的程序是错误的做法:迭代器转载 2017-12-03 18:52:16 · 762 阅读 · 0 评论 -
Iterator的remove()和Collection的remove()
一、遍历集合的方式有很多,这里就以List 为例如果是单线程的我们一般使用: int len= list.size()[java] view plain copyfor (int i=0;i } 如果是多线程的程序,我们就用Iterator 迭代器来遍历:[java] view转载 2017-12-13 16:54:44 · 1242 阅读 · 2 评论 -
HashMap为什么是线程不安全的?
一直以来只是知道HashMap是线程不安全的,但是到底HashMap为什么线程不安全,多线程并发的时候在什么情况下可能出现问题?HashMap底层是一个Entry数组,当发生hash冲突的时候,hashmap是采用链表的方式来解决的,在对应的数组位置存放链表的头结点。对链表而言,新加入的节点会从头结点加入。javadoc中关于hashmap的一段描述如下:此实现不是转载 2017-12-21 18:25:01 · 914 阅读 · 0 评论 -
【Java集合源码剖析】LinkedHashmap源码剖析
转载请注明出处:http://blog.csdn.net/ns_code/article/details/37867985 前言:有网友建议分析下LinkedHashMap的源码,于是花了一晚上时间研究了下,分享出此文(这个系列的最后一篇博文了),希望大家相互学习。LinkedHashMap的源码理解起来也不难(当然,要建立在对HashMap源码有较好理解的基础上)。转载 2017-12-07 19:05:21 · 688 阅读 · 0 评论 -
RandomAccess接口理解
https://blog.csdn.net/stick2it/article/details/53469910根据javadoc上面的的解释是:RandomAccess 是一个标记接口,用于标明实现该接口的List支持快速随机访问,主要目的是使算法能够在随机和顺序访问的list中表现的更加高效。我们可以简单的看下Collections下的binarySear转载 2018-04-08 11:45:29 · 2630 阅读 · 0 评论 -
HashMap在高并发下引起的死循环
https://www.cnblogs.com/yjbjingcha/p/6957909.htmhttp://www.cnblogs.com/wfq9330/p/9023892.htmlHashMap事实上并非线程安全的,在高并发的情况下,是非常可能发生死循环的,由此造成CPU 100%,这是非常可怕的。所以在多线程的情况下,用HashMap是非常不妥当的行为,应採用线程安全类Concur...转载 2018-07-25 17:58:57 · 2666 阅读 · 3 评论 -
Java中ArrayList remove会遇到的坑
前言平时最常用的莫过于ArrayList和HashMap了,面试的时候也是问答的常客。先不去管容量、负载因子什么的,就是简单的使用也会遇到坑。Remove 元素经常遇到的一个场景是:遍历list, 然后找到合适条件的给删除掉,比如删除所有的偶数。@Testpublic void testRemove2(){ List<Integer> integers ...转载 2018-09-10 10:00:58 · 2827 阅读 · 1 评论 -
Java List的remove()方法陷阱
https://blog.csdn.net/pelifymeng2/article/details/78085836Java的List在删除元素时,一般会用list.remove(o)/remove(i)方法。在使用时,容易触碰陷阱,得到意想不到的结果。总结以往经验,记录下来与大家分享。首先初始化List,代码如下:package com.cicc.am.test;im...转载 2019-03-04 10:25:03 · 3559 阅读 · 2 评论 -
浅谈算法和数据结构: 一 栈和队列
https://www.cnblogs.com/yangecnu/p/Introduction-Stack-and-Queue.html最近晚上在家里看Algorithems,4th Edition,我买的英文版,觉得这本书写的比较浅显易懂,而且“图码并茂”,趁着这次机会打算好好学习做做笔记,这样也会印象深刻,这也是写这一系列文章的原因。另外普林斯顿大学在Coursera上也有这本书同...转载 2019-05-31 21:44:39 · 639 阅读 · 0 评论 -
Hashpmap的原理,HashMap怎样保证key的唯一性
1. HashMap概述 HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 2. HashMap的数据结构 在java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构转载 2017-09-13 14:42:29 · 2560 阅读 · 0 评论 -
HashMap的基本原理与它的线程安全性
http://blog.csdn.net/t894690230/article/details/513239461. 前言能用图说清楚的,就坚决不用代码。能用代码撸清楚的,就坚决不写解释(不是不写注释哦)。以下所有仅针对JDK 1.7及之前中的HashMap。2. 数据结构HashMap内部通过维护一个Entry数组(变量为table),来实现其基本转载 2017-04-11 15:45:20 · 3103 阅读 · 0 评论 -
Java Map 如何实现Key 的唯一性?
大家都知道,在Map和Set不可存在重复元素? 但是对于内部的细节我们并不了解,今天我们就一块来 探讨一下!1 对于 HashMap HashSet 他们的底层数据结构的实现是:维护了一张 HashTable 。容器中的元素全部存储在Hashtable 中。他们再添加元素的时候,是如何判断是否存在有重复元素的呢? 每一个被添加的元素都有一个 hashCo转载 2015-07-10 17:45:57 · 7660 阅读 · 1 评论 -
HashSet HashTable HashMap的区别
(1)HashSet是set的一个实现类,hashMap是Map的一个实现类,同时hashMap是hashTable的替代品(为什么后面会讲到).(2)HashSet以对象作为元素,而HashMap以(key-value)的一组对象作为元素,且HashSet拒绝接受重复的对象.HashMap可以看作三个视图:key的Set,value的Collection,Entry的Set。 这里Has转载 2015-07-10 17:57:18 · 1017 阅读 · 0 评论 -
Hashtable的遍历方法
今天遇到用hashtable取值时发现取得的值是排过序的,而我并希望它排序输出,因为它是倒序输出,查一下原因是因为我用下面的第一种方法取值的,将hashtable的值排序输出了,这个真是我疏忽的问题,原来hashtable还具有自动排序的功能.于是我从网上查了些资料,并整理记录下来:import java.util.Enumeration;import java.util.Hashta转载 2015-07-10 17:57:57 · 1922 阅读 · 0 评论 -
Java Core系列之ConcurrentHashMap实现(JDK 1.7)
ConcurrentHashMap类似Hashtable,是HashMap更高效的线程安全版本的实现。不同于Hashtable简单的将所有方法标记为synchronized,它将内部数组分成多个Segment,每个Segment类似一个Hashtable,从而减少锁的粒度,并且它内部有一些比较tricky实现,让get操作很多时候甚至不需要锁(本文代码基于JDK 1.7,它在JDK 1.6的基转载 2016-04-01 15:05:02 · 1338 阅读 · 0 评论 -
HashMap的工作原理
程的环境下使用HashMap呢?:) 热心的读者贡献了更多的关于HashMap的问题:为什么String, Interger这样的wrapper类适合作为键? String, Interger这样的wrapper类作为HashMap的键是再适合不过了,而且String最为常用。因为String是不可变的,也是final的,而且已经重写了equals()和hashCode()方转载 2016-03-24 11:59:16 · 1252 阅读 · 0 评论 -
Java遍历HashMap并修改(remove)
遍历HashMap的方法有多种,比如通过获取map的keySet, entrySet, iterator之后,都可以实现遍历,然而如果在遍历过程中对map进行读取之外的操作则需要注意使用的遍历方式和操作方法。123456789101112131转载 2016-09-09 18:20:28 · 3088 阅读 · 0 评论 -
LinkedHashMap
HashMap: put -> addEntry(新建一个Entry) get getEntry LinkedHashMap: put -> addEntry(重写) 新建一个Entry,然后将其加入header前 e.a转载 2016-10-24 10:36:25 · 822 阅读 · 0 评论 -
[Java基础要义]HashMap、LinkedHashMap元素遍历机制探讨
http://blog.csdn.net/luanlouis/article/details/43017071 Map作为键值对Entry的的容器,对其内部 键值对Entry 的遍历总归是要有一个顺序的。 本文重点讨论HashMap及其子类LinkedHashMap的遍历机制,总结出两者的特点和适用情况。 CSDN-2014博客之星投票啦转载 2017-01-19 12:24:57 · 1345 阅读 · 0 评论 -
Map拷贝 关于对象深拷贝 浅拷贝的问题
问题:map拷贝时发现数据会变化。高能预警,你看到的下面的栗子是不正确的,后面有正确的一种办法,如果需要看的话的,请看到底,感谢各同学的提醒,已做更正,一定要看到最后 先看例子: public class CopyMap { /** * @author 张仲华 * @pa转载 2017-01-23 17:06:12 · 5899 阅读 · 0 评论 -
HashMap的扩容机制---resize() &; 死循环的问题
1.8 与1.7 变化较大,http://www.cnblogs.com/RGogoing/p/5285361.html学习内容:1.HashMap<K,V>在多线程的情况下出现的死循环现象 当初学Java的时候只是知道HashMap<K,V>在并发的情况下使用的话,会出现线程安全问题,但是一直都没有进行深入的研究,也是最近实验室的徒弟在问起这个问题...转载 2017-03-22 15:34:32 · 13402 阅读 · 5 评论 -
BlockingQueue的基本原理
http://blog.csdn.net/t894690230/article/details/530886601. 前言BlockingQueue即阻塞队列,它算是一种将ReentrantLock用得非常精彩的一种表现,依据它的基本原理,我们可以实现Web中的长连接聊天功能,当然其最常用的还是用于实现生产者与消费者模式,大致如下图所示:在Java中,Block转载 2017-04-11 15:44:39 · 7950 阅读 · 0 评论 -
深入Java集合学习系列:Hashtable的实现原理
http://blog.csdn.net/zheng0518/article/details/42199477转载 2015-07-10 17:45:35 · 1386 阅读 · 0 评论