不起眼的网上面试题——Java集合有哪些?主要方法有哪些?(三)

不会写博客,写点东西练练手,如有不足,还请指教。

话不多说,直奔主题。

Java集合

List

  • List 继承至Collection接口,有序,可重复。
    List的具体实现包括ArrayList、Vector、LinkedList,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。List适用于按数值索引访问元素的情形。

List具体实现小结:

  • ArrayList
    优点: 底层数据结构是数组,查询快,增删慢。
    缺点: 线程不安全,效率高
  • Vector
    优点: 底层数据结构是数组,查询快,增删慢。
    缺点: 线程安全,效率低
  • LinkedList
    优点: 底层数据结构是链表,查询慢,增删快。
    缺点: 线程不安全,效率高

Set

  • Set 也是继承至Collection接口,无序,唯一。
    Set的具体实现包括HashSet和TreeSet,它们也是可变大小集合,但不适合用索引取值。

Set具体实现小结:

  • HashSet
    底层数据结构是哈希表。(无序,唯一)
    如何来保证元素唯一性?
    1.依赖两个方法:hashCode()和equals()
  • LinkedHashSet
    底层数据结构是链表和哈希表。(FIFO插入有序,唯一)
    1.由链表保证元素有序
    2.由哈希表保证元素唯一
  • TreeSet
    底层数据结构是红黑树。(唯一,有序)
    1、 如何保证元素排序的呢?
    自然排序
    比较器排序
    2、 如何保证元素唯一性的呢?
    根据比较的返回值是否是0来决定

继承展示

Map

-Map是独立的接口
Map 提供了一个更通用的元素存储方法。Map集合类用于存储元素对(称作"键"和"值"),其中每个键映射到一个值。Map比较重要的实现HashMap、TreeMap和HashTable。

Map实现小结:

  • TreeMap是有序的,HashMap和HashTable是无序的。
  • Hashtable的方法是同步的,HashMap的方法不是同步的。
  • Hashtable是线程安全的,HashMap不是线程安全的。
  • Hashtable效率较低,HashMap效率较高。
  • Hashtable不允许null值,HashMap允许null值。

主要方法

List方法

  • void add(int index, E element)
    在指定位置插入元素,后面的元素都往后移一个元素。
  • boolean addAll(int index, Collection<? extends E> c)
    在指定的位置中插入c集合全部的元素,如果集合发生改变,则返回true,否则返回false。意思就是当插入的集合c没有元素,那么就返回false,如果集合c有元素,插入成功,那么就返回true。
  • E get(int index)
    返回list集合中指定索引位置的元素
  • int indexOf(Object o)
    返回list集合中第一次出现o对象的索引位置,如果list集合中没有o对象,那么就返回-1
  • ListIterator listIterator(int index)
    从指定位置开始,返回此列表元素的列表迭代器(按适当顺序)。和上面那个迭代器不同的就是多了一个参数,就是能控制迭代器开始的位置。
  • E remove(int index)
    删除指定索引的对象。
  • E set(int index, E element)
    在索引为index位置的元素更改为element元素。
  • List subList(int fromIndex, int toIndex)
    返回从索引fromIndex到toIndex的元素集合,包左不包右。

以上方法具体可参考如下(有例子):
Java中list集合的常用方法

Set方法

Set方法摘要

Map方法

  • Object put(Object key, Object value)
    返回值是被替换的值。
  • Object remove(Object key)
    删除该Map中key所对应的键值对
  • void putAll(Map mapping)
    在Map后面追加新的键值对,如果Map中已包含新Map中的key则将key所对应的value用新value覆盖
  • void clear()
    清空Map中的键值对,使其为空
  • Object get(Object key)
    根据key获取对应value
  • boolean containsKey(Object key)
    判断该Map中是否包含指定key,包含则返回true,否则返回false
  • boolean containsValue(Object value)
    判断Map中是否包含指定value,包含则返回true,否则返回false
  • int size()
    返回该Map的大小
  • boolean isEmpty()
    判断该Map是否为空,如果为空则返回true,否则返回false。

本文参考和引用:
Java集合中List,Set以及Map等集合体系详解(史上最全)
Java的Collection集合的常用方法
《JAVA全栈工程师》面试题库 - JAVA全栈工程师

如有不足,请多指教,每周一更,谢谢大家支持!!!

发布了6 篇原创文章 · 获赞 2 · 访问量 94

猜你喜欢

转载自blog.csdn.net/weixin_44253375/article/details/105338703