Java集合类面试题初级

JAVA集合类面试题

JAVA集合框架的基础接口

1.Collection为集合的根接口
2.Set是一个不能包含重复元素的集合
3.List是一个有序集合,可以包含重复集合。
4.Map是一个将key映射到value的对象。一个Map不能包含重复的Key,value则没有要求。一个key只能映射一个value

Iterator和ListIterator之间有什么区别

1.Iterator可以遍历Set和List集合,而Listlterator只能用来遍历List集合
2.Iterator只能向前遍历,而Listlterator可以双向遍历
3.Listlterator从Iterator接口继承,添加了一些额外的功能。

遍历一个List的方式

(1)Liststr = new ArrayList<>();
for(String obj:str){System.out.println(obj);}
(2)Iterator it = str.iterator();
while(it.hashnext()){String obj = it.next(); System.out.println(obj)}

ArrayLIst和Vector的异同

相同点

(1)两者都是基于索引的,其底层都是数组
(2)两者都是有序的
(3)迭代器都是通过fail-fast的
(4)两者都允许为空,并且可以使用索引值对元素进行访问

不同点

(1)Vector是线程安全的
(2)ArrayList比Vector更加快速
(3)ArrayList更加通用,可以使用Collections工具类获取同步列表和只读列表

Array和ArrayList的区别

Array可以容纳基本类型和对象,而ArrayList只能容纳对象
Array是指定大小的,而ArrayList大小是固定的

ArrayList和LinkedList的区别

(1)ArrayList是由Array所支持的给予一个索引的数据结构,它提供对元素的随机访问,复杂度为O(1),Lined List存储一系列的节点数据,每个节点都与前一个和下一个节点相连接,但是复杂度为O(n),比ArrayList要慢
(2)LinkedList在插入删除元素时要比Array List快
(3)LinkedList占用资源更多,因为要保存节点数据

Map集合

hahsCode()和equals()方法的重要性

当向Map里存储数据的时候,首先要使用hash Code方法计算其hash值,如果没有则加进去,如果有则调用equals方法进行比较,如果相等则不存。因此很重要

我们能否使用任何类作为Map的Key

我们可以使用任何类作为Map 的Key,有几点需要注意:
(1)如果类重写了equals()方法,他也应该重写hashCode()方法
(2)类的所有实例需要遵循与equals()和hashCode()相关的规则
(3)如果一个类没有使用equals(),则不应该在hashCode()中使用
(4)用户自定义key类的最佳实践是使之为不可变的,这样,hashCode()值可以被缓存起来,拥有更好的性能

HashMap和HashTable有何不同

1.HashMap允许key和value为null,而HashTable不允许
2.HashTable是同步的,而HashMap不是。HashMap适合单线程环境,HashTable适合多线程环境
3.HashMap提供对key的Set进行遍历,因此是fail-fast的,但HashTable提供对key的Enumeration进行遍历,它不支持fail-fash
4.HashTab被认为是个遗留的类,如果你寻求在迭代的时候修改Map,你应该使用CocurrentHashMap

你可能感兴趣的:(Java集合类面试题初级)