济南信盈达

济南信盈达坚持专注为企业和个人提供高端方设计、高端嵌入式等服务。

学校课程咨询服务:
400-882-1633
培训世界 >济南信盈达 >新闻中心 >Java集合List面试题以及答案

Java集合List面试题以及答案

2020-04-22 17:27:45来源: 济南信盈达
Java集合List面试题以及答案
导读:

大家都知道,HashMap是我们非常常用的数据结构,它是由数组和链表组合构成的数据结构的,而在JDK1.8中引入了红黑树。接下直接进入正文吧!

文章详情

1少儿编程


  1、Vector和Arraylist区别?

  区别就是synchronization的使用,ArrayList的方法没有一个是同步的,而vector大多数方法都是同步的。

  2、vector为什么说是线程安全?

  因为vector的大多数方法都是直接或者间接同步的比如添加、删除等方法。

  3、Vector和ArrayList在怎么场景下使用?

  如果我们对数据的主要操作作为索引或者只在末端增加、删除时,可以选择使用ArrayList或者Vector的,如果对数据的操作主要是为了指定位置删除和插入那就选择使用LinkedList效率会高一下。

  4、collection和collections的区别?

  collection是一个集合接口,提供对集合进行一个操作。而collections如同是一个工具类,服务于Collection框架的,主要是对集合类的一个包装类。

  5、如何实现HashMap的同步?

  通过Map map=Collection.synchronizedMap(new Hash HashMap())来实现同步的,该方法会返回一个Map,然而该Map是封装底层的HashMap的所有方法。

  6、HashMap是如何解决hash冲突的问题?

  hash冲突问题,在dk 1.8中对HashMap的实现做了很多的优化,jdk1.8采用数组+链表+红黑树来实现的,当链表长度大于阈值(默认是8),并数组长为64时就会转化为红黑树,如果数组长度小于64时他会首先进行一个扩容。

  7、什么是哈希冲突呢?

  哈希表当有两个不同的输入值时,会根据同一散列函数计算出相同的散列值的现象时,我们就叫哈希碰撞。

  8、请问HashMap和Hashtable的区别是?

  hashMap它是非线程安全的,而HashTable是线程安全的,HashTable线程安全是因为它的内部的方法基本都经过synchronized修饰的。(如果你要线程安全的话就使用ConcurrentHashMap

  在效率上HashMap是非线程安全的,效率要高于HashTable。还有HashMap的值可以为null,并且键只允许有一个null。然而HashTable不一样,只要键值有一个为null,就会直接抛出NullPointerException的。

  Hashtable初始容量大小在创建时默认的初始大小为11,之后每次扩充都是容量变为原来的2n+1的。然而HashMap默认的初始化大小为16,之后每次扩充,容量变为原来的2倍。创建时如果给定了容量初始值,那么Hashtable会直接使用你给定的大小,而HashMap会将其扩充为2的幂次方大小(HashMap中的tableSizeFor()方法。

  9、HashSet是如何检查重复

  存入过程,HashSet是会先计算对象的HashCode值来判断该对象加入的位置在哪里,同时也会对其他存入的对象HashCode值作进行了比较,没有相符的hashcode或者HashSet他会假设该对象没有重复出现,一旦发现有相同HashCode值的对象,这时会调用equals()方法来检查hashcode相等的对象是否真的相同,如果两者相同,HashSet就不会让加入操作成功。

  10、hashmap的长度为什么是2的幂次方?

  是为了能够让hashmap存取更加的高效,以及减少出现碰撞,尽量把数据分配均匀,hash的时前后加起来大概40亿的映射空间,只要我们把哈希函数映射得比较均匀,就很少出现碰撞现象的。

  11,TreeMap如何进行删除操作的?

  它是对于拉链式的散列算法,其数据结构是由数组+链表+红黑树组成一个数据结构。当在进行增删查等操作时,首先要定位到元素的所在桶的位置,之后再从链表中定位该元素。

济南信盈达

济南信盈达坚持"技术领先、服务领先",以雄厚的实力和专业的品质成为有实力从产品最底层研发到系统层开发的嵌入式实训、产品解决方案提供商。

展开更多

咨询热线:400-882-1633

1