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 ...
随机推荐
- webdriver.chrome()禁止加载图片
from selenium import webdriver chrome_options = webdriver.ChromeOptions() prefs = {"profile.man ...
- php 中 global 与 $GLOBAL 的区别
很多人都认为global和$GLOBALS[]只是写法上面的差别,其实不然. 根据官方的解释是$GLOBALS['var'] 是外部的全局变量$var本身. global $var 是外部$var的同 ...
- WebStorm过期解决方法
第一步:先删除C:\Users\本机用户名\.WebStorm2016.3\config文件中eval文件. 第二步:打开webstrom 如图,填写许可证激活码:http://idea.imsxm. ...
- vue 重构项目第一步(vue-cli跟bootstrap)
一.先安装jq跟bootstrap 1.因为bootstrap依赖jq,先安装jq----->npm install jquery@1.11.3 --save-dev ----->可以 ...
- python操作MongoDB、MySQL、Postgres、Sqlite、redis实例
总结:除了MongoDB.redis,其他三个数据库用python来操作其实是差不多的.所有例子都很简单,实际生产环境中的数据库操作远比这复杂得多,命令也比我例子中的多得多,我这里高级一点的用法就是批 ...
- 腾讯这套SpringMvc面试题你了解多少?(面试必备)
1.什么是 SpringMvc? 答:SpringMvc 是 spring 的一个模块,基于 MVC 的一个框架,无需中间整合层来整 2.Spring MVC 的优点: 答: 1)它是基于组件技术的. ...
- [Python数据挖掘]第5章、挖掘建模(下)
四.关联规则 Apriori算法代码(被调函数部分没怎么看懂) from __future__ import print_function import pandas as pd #自定义连接函数,用 ...
- topcoder srm 575 div1
problem1 link 如果$k$是先手必胜那么$f(k)=1$否则$f(k)=0$ 通过对前面小的数字的计算可以发现:(1)$f(2k+1)=0$,(2)$f(2^{2k+1})=0$,(3)其 ...
- jquery.validator 手机号验证
1.在input中加上mobile="true",maxlength="11" <label class="w170 control-label ...
- Python - 如何统计序列中元素出现的频次
1.用内置的count()方法,该方法返回子字符串在字符串中出现的次数(同样适用于列表)2.用collections模块的Counter类 示例: from collections import Co ...