Java集合框架相关知识整理
1、常见的集合有哪些?
Collection接口和Map接口是所有集合框架的父接口
Collection接口的子接口包括:Set接口和List接口
Map接口的实现类主要有:HashMap、TreeMap、HashTable、ConcurrentHashMap以及Properties等
Set接口的主要实现类有:HashSet、TreeSet、LinkedHashSet等
List接口的主要实现类有:ArrayList、LinkedList、Stack、Vector等
2、HashMap和HashTable的区别?
HashMap线程不安全,允许将Null值作为key
HashTable线程安全,使用了synchronized关键字修饰,不允许将null值设为key
3、HashMap的底层实现?
在jdk8之前,其底层实现是数组+链表,jdk8之后使用了数组+链表+红黑树实现
4、ConcurrentHashMap与HashTable的区别?
ConcurrentHashMap结合了HashMap和HashTable两者的优势,HashMap线程不安全,HashTable是线程安全的,但是hashTable在每次同步执行时都要锁住整个结构,而ConcurrentHashMap锁的方式是稍微细粒度的,ConcurrentHashMap将hash表分为16个桶,诸如get、put、remove等常用操作只锁住当前需要用到的桶。
5、List和Set的区别?
List代表着有序且可以重复的集合
Set代表着无序的且不可以重复的集合
6、List、Set、Map的初始容量和加载因子?
ArrayList的初始容量是10,加载因子为0.5,扩容增量是原来容量的1.5倍,一次扩容后长度为15
Vector的初始容量是10,加载因子为1,扩容增量是原来容量的2倍,一次扩容后长度为20
HashMap和HashSet的初始容量是16,加载因子为0.75,扩容增量是元容量的2倍,一次扩容后长度为32
7、Java集合的快速失败机制“fail-fast”
快速失败机制是java集合的一种错误检测机制,当多个线程对集合进行结构上的改变操作时,就有可能触发fail-fast机制
例如:假设存在两个线程(线程A、线程B),线程A通过Iterator在遍历集合C中的元素,在这个时候线程B修改了集合C的结构(是结构上面的修改,而不是简单的修改集合元素的内容),那么这个时候程序就会抛出ConcurrentModificationException异常,从而触发fail-fast机制。
原因:迭代器在遍历是直接访问集合中的内容,并且在遍历过程中使用一个modCount变量,集合在遍历期间如果结构发生变化,就会改变modCount的值。每当迭代器使用hasNext/next()遍历下一个元素之前,都会检查modCount变量是否为expectedmodCount值,如果一致就返回遍历,如果不一致就抛出异常,终止遍历。
8、ArrayList和Vector的区别
vector是线程安全的,使用synchornized关键字修饰实现同步,ArrayList是线程不安全的。
ArrayList和Vector都有一个相同的初始容量大小,为10,但是负载因子不同,ArrayList的负载因子是0.5,Vector的负载因子是1,所以每一次扩容ArrayList的长度为原来的1.5倍,Vector的长度为原来的2倍
9、如何去除vector中的重复元素
HashSet set = new HashSet(vector);
Java集合框架相关知识整理的更多相关文章
- Java集合框架的知识总结(1)
说明:先从整体介绍了Java集合框架包含的接口和类,然后总结了集合框架中的一些基本知识和关键点,并结合实例进行简单分析. 1.综述 所有集合类都位于java.util包下.集合中只能保存对象(保存对象 ...
- Java集合框架的知识总结
说明:面试准备,写的挺不错的. 转载地址: http://www.cnblogs.com/zhxxcq/archive/2012/03/11/2389611.html 1.综述 所有集合类都位于jav ...
- Java集合框架 面试问题整理
简介 java集合类是java.util 包中的重要内容.java集合框架包含了大量集合接口以及这些接口的实现类和操作他们的算法. java集合框架图 主要提供的数据结构 List 又称有序的Coll ...
- Java虚拟机JVM相关知识整理
Java虚拟机JVM的作用: Java源文件(.java)通过编译器编译成.class文件,.class文件通过JVM中的解释器解释成特定机器上的机器代码,从而实现Java语言的跨平台. JVM的体系 ...
- Java并发编程相关知识整理
1.什么是进程.线程.多线程? 进程当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源.进程间通讯依靠IPC资源,例如管道.套接字 线程是程序中的 ...
- java集合框架面试要点整理
- [转载]Java集合框架的常见面试题
http://www.jfox.info/40-ge-java-ji-he-lei-mian-shi-ti-he-da-an 整理自上面链接: Java集合框架为Java编程语言的基础,也是Java面 ...
- 集合框架基础知识-----java基础知识
Java集合框架 :接口:Collection.List .Set. Map:实现类:ArrayList.LinkedList.Vector.HashSet.TreeSet.HashMap.HashT ...
- Java集合框架(不全,待继续整理)
技术在线学习网站: https://www.runoob.com/java/java-collections.html 从上面的集合框架图可以看到: 1.Java 集合框架主要包括两种类型的容器: 1 ...
随机推荐
- PHP图像处理(GD库)
一.图像处理概述 1.开启GD2图像扩展库 ①PHP不仅限于只产生HTML的输出,还可以创建与操作多种不同格式的图像文件.PHP提供了一些内置的图像处理函数,也可以使用GD函数库创建新图像或处理已有的 ...
- WC.exe【C】
gitee传送门!!!(电脑打不开github,多次尝试未果,决定先用gitee存着先) 项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个命令行程序 ...
- Windbg程序调试系列3-线程阻塞问题
上一篇博文给大家分享了使用Windbg分析内存泄露问题: Windbg程序调试系列2-内存泄露问题 本篇我们继续跟大家分享,如何分析解决线程阻塞问题. 从根本上讲,线程阻塞属于程序Hang的一种,其表 ...
- 网易blog服务器关闭了,我曾经的大部分博文迁移至此,留作纪念。欢迎大家去我的简书blog~
ARM时代过去了,另一个AI时代正在上演~ 这一次我看上了计算机视觉,一个依旧在发展,论文数量不断上升的技术领域,还有很多待研究的技术突破点,我可以玩的时间长一点了. 活到老,学到了.学以致用乐趣无穷 ...
- 小容量的byteBuffer 读取大文本
利用死循环和判断是否 读到0个字节,便能判断是否读取完成,但它存在如下问题,如果输入是中文的话,可能没有读取完中文的全部3个字节,导致乱码.如果数据足够随机,这样的情况肯定会出现的 @Test pub ...
- Nodejs“实现”Dubbo Provider
背景 目前nodejs应用越来越广泛,但和java的dubbo体系接入困难,所以我们需要实现node端的dubbo provider逻辑.java的dubbo provider是和consumer在一 ...
- android sdk下载及安装教程
转自https://www.cnblogs.com/summary-2017/p/8073225.html 1.点击这个网址https://www.androiddevtools.cn/,打开页面后选 ...
- topcoder srm 625 div1
problem1 link 假设第$i$种出现的次数为$n_{i}$,总个数为$m$,那么排列数为$T=\frac{m!}{\prod_{i=1}^{26}(n_{i}!)}$ 然后计算回文的个数,只 ...
- Java基础学习-关键字的概述和特点以及常量的概述和分类
1.关键字概述 -被Java语言赋予特定含义的单词 2.关键字的特点 -组成关键字的字母全部小写 -常用的代码编辑器,针对关键字有特殊的颜色标记,非常直观,所以我们不需要死记硬 ...
- Sony索尼数码录音笔MSV格式转换为MP3格式【转】
本文转载自:http://blog.sina.com.cn/s/blog_4b2c860f0100d78w.html Sony索尼数码录音笔一般存储为WAV格式,有些没有特意修改存储格式的就保存为MS ...