6. ArrayList, LinkedList, Vector的区别是什么?
•ArrayList: 内部采用数组存储元素,支持高效随机访问,支持动态调整大小
• LinkedList: 内部采用链表来存储元素,支持快速插入/删除元素,但不支持高效地随机访
问
•Vector: 可以看作线程安全版的ArrayList
7. String, StringBuilder, StringBuffer的区别是什么?
•String: 不可变的字符序列,若要向其中添加新字符需要创建一个新的String对象
• StringBuilder: 可变字符序列,支持向其中添加新字符(无需创建新对象)
•StringBuffer: 可以看作线程安全版的StringBuilder
8. Map, Set, List, Queue、Stack的特点及用法。
• Map<K, V>: Java中存储键值对的数据类型都实现了这个接口,表示“映射表”。支持的
两个核心操作是get(Object key)以及put(K key, V value),分别用来获取键对应的值
以及向映射表中插入键值对。
• Set<E>: 实现了这个接口的集合类型中不允许存在重复的元素,代表数学意义上的“集
合”。它所支持的核心操作有add(E e),remove(Object o), contains(Object o),分别
用于添加元素,删除元素以及判断给定元素是否存在于集中。
•List<E>: Java中集合框架中的列表类型都实现了这个接口,表示一种有序序列。支持
get(int index), add(E e)等操作。
• Queue<E>: Java集合框架中的队列接口,代表了“先进先出”队列。支持add(E
element), remove()等操作。
• Stack<E>: Java集合框架中表示堆栈的数据类型,堆栈是一种“后进先出”的数据结构。
支持push(E item), pop()等操作。
更详细的说明请参考官方文档,对相关数据结构不太熟悉的同学可以参考《算法导论》或其他
相关书籍。
9. HashMap和HashTable的区别
• HashTable是线程安全的,而HashMap不是
• HashMap中允许存在null键和null值,而HashTable中不允许