1. Java中有哪些集合接口?主要方法?

参考解答

常见集合接口的继承关系如下图:

  1. Collection 表示数据集合
  2. 子接口List表示有序集合,可以通过下标来访问集合元素,允许集合内有重复元素
  3. 子接口Set用来表示无重复元素的集合,集合元素 必须实现hashCode和equals方法
  4. 子接口SortedSet表示集合元素会排序存储,必须在集合构造时传递Comparator或集合元素实现Comparable接口
  5. 子接口Queue用来表示单向队列,Deque用来表示双向队列或栈
  6. Map表示键-值集合,key在集合内不能重复,作为key的对象必须实现hashCode和equals方法
  7. SortedMap表示键-值存储是会根据key进行排序存储,集合在必须构造时传入Comparator来定义比较规则,或每个key实现Comparable接口来定义比较规则

2. List,Set,Map 是否继承自 Collection 接口?

参考解答

List,Set是;Map不是。

3. Set 里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还是 equals()? 它们有何区别?

参考解答

Set里的元素是不能重复的, 用equals()方法来区分重复与否。

需要我们自己根据业务重写equals()方法用来判断两个对象是否“相同”(内容是否相同)

而==判断地址是否相等,用来决定两个变量引用是否指向同一对象。

4. Java中的队列都有哪些,有什么区别?

参考解答

常见的有: Queue:单向队列 Deque:双向队列 BlockingQueue:阻塞队列

5. 下列不继承Collection接口的选项 ( )

A:HashMap 
B: ArrayList 
C: Set 
D: Hashtable 
E: LinkedList

参考解答

A,D; HashMap和Hashtable 继承Map接口

6. HashMap和Hashtable的区别?

参考解答

  • HashMap和Hashtable均实现了Map接口。
  • Hashtable的方法都是同步方法,可以保证线程安全,而HashMap反之。
  • Hashtable的key与value均不能为null,而HashMap都可以

7. 说出 ArrayList,Vector, LinkedList 的存储性能和特性?

参考解答

  • ArrayList和Vector都是使用数组方式存储数据,内部是通过下标访问数组元素,但是插入、删除元素要涉及数组元素移动,因此随机访问速度快,而插入、删除数据慢
  • Vector中所有方法都使用了synchronized方法来保证对象的线程安全,因此性能很差,在新版jdk中已被新的线程安全实现类所取代
  • LinkedList使用双向链表实现存储,按下标索引数据需要进行前向或后向遍历,但是插入、删除数据时只需要修改链表引用,所以插入删除速度快,而随机访问速度慢

results matching ""

    No results matching ""