1. Vector用法和ArrayList区别
(1) Vector的特有方法有哪些?
void addElement(E obj) 将指定的组件添加到此向量的末尾,将其大小增加1。
(2) Vector与ArrayList的区别是什么?
①Vector的add()方法是同步方法,ArrayList的add()方法是非同步方法
②Vector扩容每次扩充1倍,ArrayList每次扩充0.5倍
③Vector是在调用构造方法时,直接初始化容量为10,ArrayList是在第一次调用添加方法时,初始化容量为10。
④Vector的版本时JDK1.0开始的,ArrayList是JDK1.2开始的
⑤Vector是线程同步的,安全性高,效率低,
ArrayList是线程非同步的,安全性低,效率高。
2. Map接口_HashMap_Hashtable的用法详解
(1) Map接口常用的方法有哪些?
①void clear() 从该地图中删除所有的映射(可选操作)。
②boolean containsKey(Object key) 如果此映射包含指定键的映射,则返回 true 。
③boolean containsValue(Object value) 如果此地图将一个或多个键映射到指定的值,则返回 true 。
④Set<Map.Entry<K,V>> entrySet() 返回此地图中包含的映射的Set视图。
⑤V get(Object key) 返回到指定键所映射的值,或 null如果此映射包含该键的映射。
⑥boolean isEmpty() 如果此地图不包含键值映射,则返回 true 。
⑦Set<K> keySet() 返回此地图中包含的键的Set视图。
⑧V put(K key, V value) 将指定的值与该映射中的指定键相关联(可选操作)。
⑨void putAll(Map<? extends K,? extends V> m) 将指定地图的所有映射复制到此映射(可选操作)。
⑩V remove(Object key) 如果存在(从可选的操作),从该地图中删除一个键的映射。
a.default boolean remove(Object key, Object value) 仅当指定的密钥当前映射到指定的值时删除该条目。
b.default V replace(K key, V value) 只有当目标映射到某个值时,才能替换指定键的条目。
c.int size() 返回此地图中键值映射的数量。
d
(2) HashMap与Hashtable的异同是什么?
①版本不同HashMap JDK1.2 Hashtable 1.0
②HashMap继承了AbstractMap,实现了Map接口,Hashtable继承了Dictionary实现Map接口。
③HashMap允许null值和null键,但是null作为key只允许一个,Hashtable非null的键和值。
④HashMap是线程不同步的(效率高,安全性低),Hashtable(效率低,安全性高)线程同步。
3. HashMap的底层原理
(1) HashMap的底层数据结构是什么?
散列表
(2) 简述哈希表的去重原理?
调用equals(…)方法比较元素的内容是否相同,如果相同则不再向链表中添加元素。
1. 二叉树和红黑树
(1) 简述树的概念和特征?
树的概念:由一个集合以及在该集合上定义的一种关系构成的。集合中的元素称为树的结点,所定义的关系为父子关系。
树的特征:父子关系在树的结点之间建立了一个层次结构。树的结点包含一个数据元素及若干指向其子树的若干分支。在这种层次结构中有一个结点具有特殊的地位,这个结点称为该树的根结点,或简称为树根。
(2) 什么样的树被称为红黑树?
①红黑树是平衡二叉树的一种。平衡二叉树:每个结点的平衡因子都为1,-1,0的二叉排序树,或者说每个结点的左右子树的高度最多差1的二叉排序树。由于红黑树也是二叉查找树,它们当中每一个节点的比较值都必须大于或等于在它的左子树中的所有节点,并且小于或等于在它的右子树中的所有节点。这确保红黑树运作时能够快速的在树中查找给定的值。
②红黑树的每个节点上都有存储位表示结点的颜色,可以是红或黑。
③每个叶子节点(NIL)是黑色。[注意:这里叶子节点,是指为空(NIL或NULL)的叶子节点!]
④如果一个节点是红色的,则它的子节点必须是黑色。
⑤从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点。
2. TreeMap的使用和底层实现
(1) TreeMap的常用构造方法有哪些?
①TreeMap() 使用其键的自然排序构造一个新的空树状图。
②TreeMap(Comparator<? super K> comparator)
构造一个新的,空的树图,按照给定的比较器排序。
③TreeMap(Map<? extends K,? extends V> m)
构造一个新的树状图,其中包含与给定地图相同的映射,根据其键的 自然顺序进行排序 。
④TreeMap(SortedMap<K,? extends V> m)
构造一个包含相同映射并使用与指定排序映射相同顺序的新树映射。
(2) TreeMap的底层数据结构是什么?
红黑树
3. Set接口_HashSet的用法
(1) Set集合存储元素的特征?
唯一,无序。
(2) Set接口常用的子类有哪些?
HashSet,LinkedHashSet,TreeSet
4. HashSet底层实现_JDK源码分析
(1) HashSet的底层数据结构概念?
哈希表,也叫散列表,是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。由数组+单向链接组成其数据结构。
(2) HashSet与HashMap的关系?
底层都是用散列表作为数据结构实现的容器类,一个实现了Set接口,一个实现Map接口。两者不同在于:
*HashMap*
*HashSet*
HashMap实现了Map接口
HashSet实现了Set接口
HashMap储存键值对
HashSet仅仅存储对象
使用put()方法将元素放入map中
使用add()方法将元素放入set中
HashMap中使用键对象来计算hashcode值
HashSet使用成员对象来计算hashcode值,对于两个对象来说hashcode可能相同,所以equals()方法用来判断对象的相等性,如果两个对象不同的话,那么返回false
HashMap比较快,因为是使用唯一的键来获取对象
HashSet较HashMap来说比较慢
5. TreeSet的使用_JDK源码分析
(1) TreeSet的底层数据结构是什么?在存储自定义元素时是通过什么方式去掉重复元素的?
红黑树。通过内部或者外部比较器实现comparator接口,compare()方法来去重。
(2) TreeSet集合的特点?
有序(升序),唯一。
6. 泛型
(1) 为什么需要泛型?使用泛型的好处有哪些?
在JDK1.4以前类型不明确:装入集合的类型都被当做Object对待,从而失去自己的实际类型。从集合中取出时往往需要转型,效率低,容易产生错误。
好处:增强程序的可读性和安全性。
(2) 泛型分几类,分列举例说明?
①泛型类 public class Myclass<T>{}
②泛型接口 public interface MyInterface<T>{}
③泛型方法public viod Mymethod(){}
7. 泛型的高级使用_容器中使用泛型
(1) 泛型的高级应用分为哪两类?
①泛型的上限:使用关键字 extends,表示参数化的类型可能是 所指定的类型或者是此类型的子类
②泛型的下限:使用关键字 super 进行声明,表示参数化的类型 可能是所指定的类型,或者是此类型的父类型,直至 Object 类
(2) 泛型的上限指的是什么含义,请举例说明?
泛型的上限:使用关键字 extends,表示参数化的类型可能是 所指定的类型或者是此类型的子类