1、集合Collection中存储的如果是自定义的对象,需要自定义类(Person、User)重写哪个方法?为什么?
1、Collection:equals()方法。
2、List:equals()方法
3、Set:
- (HashSet、LinkedHashSet为例):equals()方法、hashCode()方法
- (TressSet为例):Comparable:compareTo(Object obj)方法
Comparator:compare(Object o1,Object o2)方法
2、ArrayList、LinkedList、Vector三者的相同点与不同点?
相同点:三者都是List接口的实现类。
- ArrayList和Vector:
ArrayList是List接口主要的实现类,使用较多;线程不安全;效率高;底层是数组;扩容事是1.5倍。
Vector是List接口古老的实现类;线程安全的;效率低;底层是数组;扩容时是2倍。 - ArrayList和LinkedList:
ArrayList底层是数组,有下标,查找某个元素可以直接通过下标找到对应位置元素,时间复杂度是o(1);删除元素时间复杂度为o(n);
LinkedList查找某个元素时事件复杂度是o(n);删除一个元素时间复杂度为o(1);
3、List接口的常用方法有哪些?(增、删、改、查、插、长度、遍历)
- 增:add(Object obj)
- 删:remove(Object obj)/remove(int index)
- 改:set(int index,Object obj)
- 插:add(int index,Object obj)
- 长度:size()
- 遍历:Iterator、foreach、普通的for循环
4、Set存储数据的特点是什么?常见的实现类有什么?说明一下彼此特点?
HashSet、LinkedHashSet、TreeSet