Java集合面试题:[1]集合面试题、Java集合

2025-05-24 20:59:23

1、集合类特性(几个常用类的区别)ArrayList:元素单个,效率高,多用于查询 Vector:元素单个,线程安全,多用于查询 LinkedList:元素单个,多用于插入和删除 HashMap:元素成对,元素可为空 HashTable:元素成对,线程安全,元素不可为空WeakHashMap:是一种改进的HashMap,它对key实行“弱引用”,如果一个key不再被外部所引用,那么该key可以被GC回收

2、Iterator是什么一些集合类提供了内容遍历的功能,通过java.util.Iterator接口。这些接口允许遍历对象的集合。依次操作每个元素对象。当使用Iterators时,在获得Iterator的时候包含一个集合快照。通常在遍历一个Iterator的时候不建议修改集合本省。Iterator与ListIterator有什么区别1. Iterator可用来遍历Set和List集合,但是ListIterator只能用来遍历List。2. Iterator只能正向遍历集合,适用于获取移除元素。ListIerator继承Iterator,可以双向列表的遍历,同样支持元素的修改。比如:增加元素,替换元素,获取前一个和后一个元素的索引,等等。

3、Collection和Collections的区别Collection是集合类的上级接口,继承与他的接口主要有Set和List.Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作List、Map、Set三个接口,存取元素时,各有什么特点List 以特定次序来持有元素,可有重复元素;Set 无法拥有重复元素,内部排序(无序);Map保存key-value值,value可多值。

Java集合面试题:[1]集合面试题、Java集合

8、HashMap,LinkedMap,TreeMap的区别HashMap,LinkedHashMap,Tre髫潋啜缅eMap都属于Map。LinkedHashMap是HashMap的子类。Map 主要用于存储键(key)值(value)对,根据键得到值,因此键不允许键重复,但允许值重复1.HashMap的内部结构是一个数组,线性顺序存储,二次结构使用线性的单链表。使用key的hashCode做二次hash之后,再截取小于数组长度的值为索引值。key可以为null,存在索引为0的位置上。由于使用了数组,所以有一个负载因子loadFactor的概念(临界阈值threshold)和resize。resize比较耗时,冲突时链式遍历查找也比较耗时,所以选定一个合适的初始容易比较重要。存取性能都较高。迭代遍历时一维使用数组,二维使用链表。 HashMap 是一个最常用的Map,它根据键的HashCode 值存储数据,根据键可以直 接获取它的值,具有很快的访问速度。HashMap最多只允许一条记录的 键为Null;允许多条记录的值为 Null;HashMap不支持线程的同步,即任 一时刻可以有多个线程同时写HashMap;可能会导致数据的不一致。如 果需要同步,可以用 Collections的synchronizedMap方法使HashMap 具有同步的能力。 2.LinkedHashMap是HashMap的子类。内部结构是一个数组,线性顺序存储,二次结构使用线性的单链表,但同时内部维护了一个双向循环链表,可以保持顺序。access-order=false默认为使用新增存储顺序,access-order=true则指定使用读取和访问顺序。removeEldestEntry=false(当指定为true时,就是实现LRU算法的缓存容器,当然要指定淘汰时的使用频率和容量上限,其实是一个最近最少使用-->最近使用access-order=true/最新存储access-order=false)。存取性能较HashMap差-些,但相差不大。header.after为尾方向,header.before为首方向。迭代遍历时entrySet().iterator()跟HashMap一样(有点困惑,为什么不按线性顺序进行迭代,只能重写entrySet(),keySet()和values()方法)。适用于有缓存设计需求的情况(需继承)。 3.TreeMap的内部结构是一棵红黑树(又叫排序数,是二叉树的一种),使用链式存储,可以指定比较器Comparator,key需实现Comparable接口。key不能为null。存结点性能稍差,因为需要调整树结构;取结点用的是链表遍历,但是属于有序比较,性能中等。迭代遍历时用的树的中序遍历,是一个有序序列。适用于有排序需求的情况。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢