JavaSE面试题---集合Collection

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

猜你喜欢

转载自blog.csdn.net/qq_46112274/article/details/124237689