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集合框架相关知识整理的更多相关文章

  1. Java集合框架的知识总结(1)

    说明:先从整体介绍了Java集合框架包含的接口和类,然后总结了集合框架中的一些基本知识和关键点,并结合实例进行简单分析. 1.综述 所有集合类都位于java.util包下.集合中只能保存对象(保存对象 ...

  2. Java集合框架的知识总结

    说明:面试准备,写的挺不错的. 转载地址: http://www.cnblogs.com/zhxxcq/archive/2012/03/11/2389611.html 1.综述 所有集合类都位于jav ...

  3. Java集合框架 面试问题整理

    简介 java集合类是java.util 包中的重要内容.java集合框架包含了大量集合接口以及这些接口的实现类和操作他们的算法. java集合框架图 主要提供的数据结构 List 又称有序的Coll ...

  4. Java虚拟机JVM相关知识整理

    Java虚拟机JVM的作用: Java源文件(.java)通过编译器编译成.class文件,.class文件通过JVM中的解释器解释成特定机器上的机器代码,从而实现Java语言的跨平台. JVM的体系 ...

  5. Java并发编程相关知识整理

    1.什么是进程.线程.多线程?     进程当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源.进程间通讯依靠IPC资源,例如管道.套接字     线程是程序中的 ...

  6. java集合框架面试要点整理

  7. [转载]Java集合框架的常见面试题

    http://www.jfox.info/40-ge-java-ji-he-lei-mian-shi-ti-he-da-an 整理自上面链接: Java集合框架为Java编程语言的基础,也是Java面 ...

  8. 集合框架基础知识-----java基础知识

    Java集合框架 :接口:Collection.List .Set. Map:实现类:ArrayList.LinkedList.Vector.HashSet.TreeSet.HashMap.HashT ...

  9. Java集合框架(不全,待继续整理)

    技术在线学习网站: https://www.runoob.com/java/java-collections.html 从上面的集合框架图可以看到: 1.Java 集合框架主要包括两种类型的容器: 1 ...

随机推荐

  1. Linux 系统的启动过程

    1.基本概念 BIOS  中文名  主板BIOS  外文名  Basic Input/Output System  全    称  基本输入输出系统(全称是ROM-BIOS,是只读存储器基本输入/输出 ...

  2. 【转】jenkins自动化部署项目7 -- 新建job(将服务代码部署在windows上)

    关于构建结束后jenkins会kill所有衍生子进程的官方解决方案:https://wiki.jenkins.io/display/JENKINS/Spawning+processes+from+bu ...

  3. php 图片添加文字,水印

    因为工作需求,用到这个,网上找了很多,也没有找到好的方式,最后找到这种感觉比较简单的方式,记录下来,以备后用.   $im = imagecreatefrompng("img/yyk_bg. ...

  4. mysql:数据库备份方案

    1. 数据库备份方案     1)没备份,跑路~     2)全量备份+增量备份 如果不小心“删库”,可以这么恢复: a. 将最近一次全量备份的全库找到,拷贝回来(文件一般比较大),解压,应用: b. ...

  5. zigbee 中ZDO的理解

    ---恢复内容开始--- ZigBee     物理层:主要进行无线数据的收发,同时定义了无线传输的信道以及频率.      MAC层:使用CSMA-CA机制接入到无线信道,负责传输信标帧,保持同步和 ...

  6. Linux系统的目录结构及常见目录总结

    Linux系统的目录结构(必须掌握的内容) 所有目录只有一个顶点/(根),所有目录的起点. 只有一棵树 Linux的目录结构也是有规律的,而且也是按照类别组织的. 应用程序 /usr/bin 数据文件 ...

  7. String<-->int

    String s = "123); int a = Integer.parseInt(s); String b = String.valueOf(a); Integer i = 100; 自 ...

  8. axios中post传参方式

    最近做vue项目,做图片上传的功能,使用get给后台发送数据,后台能收到,使用post给后台发送图片信息的时候,vue axios post请求发送图片base64编码给后台报错HTTP 错误 414 ...

  9. Sublime报错

    Sublime出现 unable to read project的错误对话框 每次重新开启都会弹出对话框 解决办法: 1.关闭Sublime 2.C:\Users\Administrator\AppD ...

  10. Cannot redeclare C() (previously declared in .

    在引入支付宝入口文件AopSdk.php的时候报错:Cannot redeclare C() (previously declared in D:\phpStudy\WWW\thinkphp\help ...