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 ...
随机推荐
- Django框架详细介绍---认证系统
在web开发中通常设计网站的登录认证.注册等功能,Django恰好内置了功能完善的用户认证系统 1.auth模块 from django.contrib import auth 模块源码 import ...
- 跟我一起学python(1)
1.变量 定义一个变量 会有三个特征 id,type,value print(id(age),type(age),age) 命名推荐用下划线方式 (尽量用英文 不要过长 意思要明白) numb ...
- 机器学习算法GBDT
http://www-personal.umich.edu/~jizhu/jizhu/wuke/Friedman-AoS01.pdf https://www.cnblogs.com/bentuwuyi ...
- 内存泄漏(I)
Block 解决内存泄漏 使用 weakSelf 进行解决 NSTimer 的内存泄漏与解决方案 内存泄漏
- 如何在页面上同时使用 jQuery 和其他框架?
Query 和其他 JavaScript 框架 正如您已经了解到的,jQuery 使用 $ 符号作为 jQuery 的简写. 如果其他 JavaScript 框架也使用 $ 符号作为简写怎么办? 其他 ...
- jquery serializeArray()、serialize()增加数据
转自:http://blog.csdn.net/csdnzhangtao5/article/details/52981541 serialize().serializeArray()方法都是jquer ...
- Linux服务器 XAMPP后添加PHP和MYSQL环境变量
编辑/etc/profile文件 在文件末尾添加两行代码 vi /etc/profile CentOS: PATH=$PATH:/opt/lampp/bin export PATH Ubuntu: e ...
- 使用pynlpir增强jieba分词的准确度
在使用jieba分词时,发现分词准确度不高.特别是一些专业词汇,比如堡垒机,只能分出堡垒,并不能分出堡垒机.这样导致的问题是很多时候检索并不准确. 经过对比测试,发现nlpir进行分词效果更好.但是n ...
- day07数据类型的相互转化,字符编码
复习 ''' 1.深浅拷贝 ls = [1, 'a', [10]] 值拷贝:直接赋值 ls1 = ls, ls中的任何值发生改变,ls1中的值都会随之改变 浅拷贝:通过copy()方法 ls2 = l ...
- flutter插件汇总2
作者:知乎用户链接:https://www.zhihu.com/question/307594373/answer/568969429来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载 ...