集合面试相关提型
二、集合
2.1基本概念
Java Collections 框架是什么?
该框架中包含了大量集合接口以及这些接口的实现类和操作它们的算法(排序、查找、反转、替换、复制等)。
主要提供了List列表、Queue队列、Set集合、Stack栈、Map(映射表,用于存放键值对)等数据结构。其中,List、Queue、Set、Stack都继承自Collection接口。
Set、List和Map3个接口:
Set表示数学意义上的集合概念;
List称有序的集合;
Map提供了一个从键映射到值的数据结构。
Map是一个接口,需实例化实现Map接口的类的对象,比如new HashMap()。
例子:Map m = new HashMap();
什么是迭代器?
答:迭代器Iterator是一个对象,它的工作是遍历并选择序列中的对象,它提供了一种访问一个容器(container)对象中的各个元素,而又不必暴露该对象内部细节的方法。
ArrayList、Vector和LinkedList有什么区别?
ArrayList、Vector、LinkedList均在java.util包中,均为可伸缩数组,即可以动态变长度的数组。
ArrayList与Vector最大的区别就是同步锁的使用,没有一个ArrayList方法是同步的。
LinkedList是采用双向列表来实现的,对数据的索引需要从列表头开始遍历,因此用于随机访问则效率比较低,但是插入元素时不需要对数据进行移动。插入效率高;
线性表最常用的操作是存取第i个元素及其前趋的值,采用顺序表存储方式节省时间。
在HashTable上下文中,同步指的是什么?
答:同步意味着在一个时间点只能有一个线程可以修改hash表,任何线程在执行HashTable的更新操作前都需要获取对象锁,其他线程则等待锁的释放。
如何实现HashMap的同步?
答:HashMap可以通过Map m = Collections.synchronizedMap(new HashMap())来达到同步的效果。具体而言,该方法返回一个同步的Map,该Map封装了底层的HashMap的所有方法。
用自定义作为HashMap或HashTable的Key需要注意哪些问题?
Collection和Collections有什么区别?
Collection是一个集合接口。它提供了对集合对象进行基本操作的通用接口方法。
Collections是针对集合类的一个包装类,它提供一系列静态方法以实现对各种集合的搜索、排序、线程安全化等操作。