集合(一)

1、请说明List、Map、Set三个接口存取元素时各有什么特点?

  • List和Set接口都是Collection的子接口,List接口允许存储重复的数据,元素在集合中的顺序就是存入时的顺序,可以通过索引查询数据;Set集合最大的特点就是存储的数据不允许重复,并且数据元素在集合中的顺序不一定是存入时的顺序,无法通过索引取得数据。

 

  • Map集合采用键值对的方式存取数据,其存储也是无序的。

2、请阐述ArrayList、LinkedList、Vector的存储性能和特性?

ArrayList和Vector都是是通过数组来实现的,两者最大的区别就是Vector中的方法采用了synchronized同步处理机制。

LinkedList则是通过链表来实现的。查询数据时,ArrayList的存储性能大于Vector大于LinkedList。插入和删除数据时LinkedList的存储性能最高。

3、请说明HashMap和HashTable的区别

HashMap和HashTable都实现了Map接口,它们有如下几个主要的区别:

(1)、HashTable中的方法使用了同步处理,是线程安全的,而HashMap不是。

(2)、HashMap的键值允许为null,而HashTable的键和值都不能null,为null会抛出空指针异常。

(3)、HashMap默认容量为16,HashTable默认容量为11。

4、请说说快速失败和安全失败的区别?

  • 快速失败:集合再迭代过程中发生并发修改后抛出异常,java.util包下的集合类都是快速失败的。

 

  • 安全失败:采用安全失败机制的集合容器在遍历时并不是直接遍历原集合,而是将原集合拷贝一份进行遍历,所以对原集合的修改并不会抛出异常,但是遍历时无法保证读取到是数据是原始集合中最新的数据。java.util.concurrent包下的集合都是安全失败的。

 

  • 两者的区别就是快速失败的集合类是直接遍历原集合,安全失败是遍历原集合的拷贝数据。

5、请说说Iterator和ListIterator的区别?

(1)、Iterator可以迭代List、Set集合,而ListIterator接口只能迭代List集合。

(2)、Iterator只能实现从前往后迭代,ListIterator接口既可以从前往后迭代又可以从后往前迭代集合。

(3)、ListIterator接口实现了Iterator接口,功能更为强大,例如增加元素、删除元素等。

 

6、什么是迭代器?

迭代器就是Iterator接口,Iterator接口提供了统一遍历操作集合元素的统一接口。需要注意的是,在使用Iterator接口遍历的过程中不能删除元素,否则会抛出异常。

posted @ 2020-11-05 16:43  我是一只IT小菜鸟  阅读(59)  评论(0)    收藏  举报