Java基础面试题之三
16.HashMap 和 Hashtable 有什么区别?
1.继承的父类不同
HashMap的父类的AbstractMap,Hashtable的父类是Dictionary:
同时都实现了接口 Map Colone Serilareable
2.null值不同
hashtable中的key和value都不允许为null
HashMap,key值允许一个为null,value可以多个为null值
如果通过get方法获取到的值为null,要不key值为null,要不然就是value值为null
想判断元素,可以通过constainsKey()来进行判断
3.安全性
hashtable是线程安全的
HashMap是线程不安全的,但是效率比Hashtable要高,如果想使用线程安全Map,
使用ConcurrentHashMap,线程安全的,效率是HashMap的几倍
4.遍历方式:
都可以采用迭代器进行遍历,但是hashtable可以使用Enumation()方法进行遍历数据
HashMap在迭代的时候,采用的是Iteator fial-fash机制,在遍历某一个数据的时候,另外一个线程
对象HashMap中的数据,进行(添加 修改,删除),会出现ConcurrentModifyException,但是调用
remover()不会报这个异常,不是每次都会出现这.个异常的
5.初始化容量
hashtable:的初始化容量是11,每次扩容 2N+1
hashMap:初始化容量是12,每次扩容是原来的两倍
6.hash算法不同
hashtable:hash算法计算hashcode值的方法是 地址值或者字符串等对某个数除得到hashcode结果,效率低
hashMap:计算hashcode的方法是取模,这样可以采用位运算,效率比hashtable的除高很多
17.如何决定使用 HashMap 还是 TreeMap?
HashMap:因为采用的时候hash算法,散列存储,所以查找某个数据比较快
TreeMap:插入,删除数据快 用treeMap
18.ArrayList 和 LinkedList 和Vectory 的区别是什么?
-
ArrayList:底层采用的数字,插入和删除数据慢,查询数据快,线程不安全的
-
linkedList:底层采用的双向链表,查询慢,插入和删除数据快,线程不安全的
-
vector:底层采用数组进行存储,插入删除数据慢,查询快,线程安全的
总结:在ArrayList和LinkedList之间的区别是 LinkedList更占内存,因为在链表中存储一个数据是以一个节点(一个元素,一个地址)的形式
19.如何实现数组和 List 之间的转换?
- 数组转换成list:Arrays.asList(数组)
- list转换成数组:Arrays.toArray(list.size);
20.哪些集合类是线程安全的?
线程安全的集合类:
- 1.StringBuffer
- 2.vector
- 3.hashtable
21.Iterator 是什么? 怎么使用?有什么特点?
-
1.Iterator:是迭代Collection集合中的数据的一个迭代器,它不能自己实列化,只能通过集合调用集合的内部类进行实列化
所以,只能依赖于集合一起使用: -
2 特点:
1.Iterator遍历集合元素的时候,不允许其他线程对集合中的元素进行修改,否则会抛出
concurrentModifactionException 异常
2.在集合中调用remove()方法不会抛出concurrentModifactionException 异常3.迭代器必须依赖于Collection集合而存在
22.怎么确保一个集合不能被修改?
通过调用UnModifyableMap(map) 方法返回的集合 就不能被修改
List:UnModifyableList(map)
List:UnModifyableSet(map)
23.Queue 中 remove() 和 poll()有什么区别?
remove()和poll()方法:都会删除队列中第一个元素,但是当队列为空时
- remove():会抛出 NoSuchElementExceptin异常
- poll():只会返回一个null值

本文详细对比了HashMap与Hashtable的六大关键差异,包括线程安全、null值处理、遍历方式、初始化容量、hash算法及性能考量。进一步探讨了HashMap与TreeMap的选择策略,以及ArrayList、LinkedList和Vector的特点与适用场景。最后,介绍了数组与List的转换方法,线程安全的集合类,Iterator的使用及其特性,如何确保集合不可修改,以及Queue中remove与poll方法的区别。
2474

被折叠的 条评论
为什么被折叠?



