Java集合框架 面试问题整理

简介

java集合类是java.util 包中的重要内容。java集合框架包含了大量集合接口以及这些接口的实现类和操作他们的算法。

java集合框架图

java集合框架图 示例图片

主要提供的数据结构

  • List
  • Queue
  • Set
  • Stack
  • Map

List

ArrayList,LinkedList和Vector的区别

  • ArrayList和Vector都是由Object[]实现的,LinkedList是由双向链表实现的。
  • Vector是线程安全的,Vector中绝大多数的方法都是直接或者间接同步的。
  • ArrayList每次扩容1.5倍,Vector每次扩容2倍。

Map

HashMap和HashTable的区别

  • 继承的父类不同:HashTable继承自Dictionary类,而HashMap继承自Abstract Map类但是都两者实现了Map接口
  • 线程安全性不同:HashTable 的方法是线程安全的,其中的每个方法都加入了Synchronized同步。
  • 提供的方法不同:HashMap和HashTable相似度很高,但是也有区别,在HashMap中将contain方法去掉了,改成了containsValue和containsKey。(contains容易造成误解
  • key和value是否可以为空值(null):在HashMap中允许且只允许一个key值为null,允许多个value值为null。HashTable中Key和value都不允许为null。
  • 遍历方式实现不同:HashTable和HashMap都是用了迭代器Iterator。HashTable中还使用了Enumeration方式。
  • Hash值不同:HashTable直接将对象的HashCode作为Hash值。HashMap则重新计算key的Hash值。
  • 数组的初始化不同:HashTable默认为11,扩容为(old*2+1),HashMap 默认为16,扩容为(old *2)

猜你喜欢

转载自www.cnblogs.com/winstonehome/p/11664633.html
今日推荐