Java的集合

1. Collection 接口

这是所有单列集合的根接口。它提供了对集合对象进行基本操作的通用接口。

2. List 接口

  • ArrayList:基于动态数组实现,支持快速随机访问。

  • LinkedList:基于双向链表实现,在添加或删除元素时效率较高。

  • Vector:早期的动态数组实现,与ArrayList类似,但它是同步的(线程安全)。

  • Stack:基于Vector实现,但只提供了后进先出(LIFO)的堆栈操作。

3. Set 接口

  • HashSet:基于哈希表实现,不包含重复元素。

  • LinkedHashSet:HashSet的子类,内部通过链表维护元素的插入顺序。

  • TreeSet:基于红黑树实现,元素有序且不包含重复元素。

4. Queue 接口

  • LinkedList(实现了Queue接口):可以作为一个队列、栈或双端队列使用。

  • PriorityQueue:基于优先级堆实现,元素按照其自然顺序或者Comparator确定的顺序进行排序。

5. Map 接口

  • HashMap:基于哈希表的Map接口实现。

  • LinkedHashMap:HashMap的子类,维护键值对的插入顺序。

  • TreeMap:基于红黑树实现,键值对有序。

  • Hashtable:早期的哈希表实现,与HashMap类似,但它是同步的(线程安全)。

  • ConcurrentHashMap:高效的线程安全的Map实现。

6. 其他接口和类

  • Deque 接口:双端队列,如ArrayDequeLinkedList(实现了Deque接口)。

  • EnumSet 和 EnumMap:专为枚举类型设计的Set和Map实现,用于提高性能和内存使用。

     

     

    1)ArrayList集合
    1、特点

    ArrayList是集合的一个实现类;

    ArrayList内部封装了一个Object类型的对象,初始长度为0,且长度可变

    ArrayList集合的查询快,但是增删慢

    线程不安全

    2、ArrayList集合的一些方法

    .add(Object element)向列表的尾部添加指定的元素。

    .size()返回列表中的元素个数。

    .get(int index)返回列表中指定位置的元素,index从零开始。

    .clear()从列表中移除所有元素

    .isEmpty()判断列表是否包含元素,不包含元素则返回true,否则返回false

    .contains(Object o)如果列表包含指定的元素,则返回true。

    .remove(int index)移除列表中指定位置的元素,并返回被删元素,删除位置后面的元素(如果有)向前移动。

    .remove(Object o)从List集合中移除第一次出现的指定元素,移除成功则返回true,否则返回false。当且仅当List集合中含有满足(o==null ? get(i)==null : o.equals(get(i)))条件的最低索引i的元素时才会返回true。
    .iterator()返回按适当顺序在列表的元素上进行迭代的迭代器

     

    2)LinkedList集合

    1、LinkedLIst集合的一些特点

    LinkedList是集合的一个实现类

    LinkedList内部封装了一个双向链表

    LinkedList集合的增删快,但是查询慢

    线程不安全

    2、LinkedList集合的一些方法:

    boolean add(Object element) 它将元素附加到列表的末尾。

    boolean add(int index,Object element) 指定位置插入。 void addFirst

    boolean add(int index,Object element) 指定位置插入。 void addFirst(E element) 元素附加到列表的头部 void addLast(E element) 元素附加到列表的尾部

    Object get(int index) 根据下标获取数据

    Object getFirst() 它返回链表的第一个元素。

    Object getLast() 它返回链接列表的最后一个元素。

    boolean contains(Object element)如果元素存在于列表中,则返回true。

    remove() 删除第一个元素

    remove(int location) 删除指定位置的元素

    removeFirst() 删除并返回链接列表的头部一个元素

    removeLast() 删除并返回链接列表的尾部一个元素

    .clear():它删除列表中的所有元素。

     

    3)Vector集合 

    Vector集合的特点

    底层的数据结构是:数组

    有索引、查询快、增删慢

    单线程,线程安全

    三、Map集合

    1)HashMap集合

    1.HashMap示意图

     

    2.HashMap的特点

    底层是链表+数组,JDK8以后右加了红黑树
    存储的是key-value类型的数据
    key值不允许重复,key重复会被覆盖,value运行重复
    数据存储无序:无序指的是插入顺序和取出顺序是不一致的
    key和value都允许为空,但是只能有一个空的key

    3.HashMap的常用方法

    ①.put(K key, V value) 将键(key)/值(value)映射存放到Map集合中
     ②.get(Object key) 返回指定键所映射的值,没有该key对应的值则返回 null,即获取key对应的value。

     ③. size()  返回Map集合中数据数量,准确说是返回key-value的组数。

    ④:clear() 清空Map集合

    ⑤:isEmpty () 判断Map集合中是否有数据,如果没有则返回true,否则返回false

    ⑥:remove(Object key) 删除Map集合中键为key的数据并返回其所对应value值。

    ⑦:containsKey(Object key) Hashmap判断是否含有key

    ⑧:containsValue(Object value) Hashmap判断是否含有value

    ⑨:Hashmap添加另一个同一类型的map下的所有数据

    2)TreeMap集合
    1..TreeMap的特点

    TreeMap是一个有序的key-value集合,他是通过红黑树实现的
    无序,不允许重复(无序指元素顺序与添加顺序不一致)
    treeMap的key是有序的
    TreeMap集合默认会对键进行排序,所以键必须实现自然排序和定制排序中的一种:自然排序/定制排序
     

    四、set集合
    1)HashSet集合
    1.HashSet集合的特点

    HashSet底层使用的是HashMap
    不能保证元素的顺序,元素是无序的,不能有重复的元素
    集合元素值允许为nul
    HashSet线程不安全

    2..HashSet常用方法

    ①:add(Object o):向Set集合中添加元素,不允许添加重复数据。

    ②:size():返回Set集合中的元素个数
     

    2)LinkedHashSet集合
    LinkedHashSet集合的特点

    LinkedHashSet底层使用的是HashSet,同时使用链表维护元素的插入顺序
    元素有序且唯一,链表保证元素有序
    哈希表保证元素唯- 线程不安全

    3)TreeSet集合
    1.TreeSet集合的特点
    TreeSet其内部使用的是TreeMap,TreeMap是基于红黑树实现的
    插入数据内部有两种排序方法:自然排序(默认) 定制排序
    无序:TreeSet会对插入的数据排序,所以输入顺序和输出顺序不一致
    值不能为null
    值唯一
    线程不安全
     

    4)HashSet、LinkedHashSet、TreeSet的使用场景
    HashSet:HashSet的性能基本上比LinkedHashSet和TreeSet要好,特别是添加和查询,这也是用的最多的两个操作

    LinkedHashSet:LinkedHashSet的查询稍慢一些,但是他可以维持元素的添加顺序。所以只有要求当插入顺序和取出顺序一致的时候 才使用LinkedHashSet。

    TreeSet:只有在需要对元素进行排序时使用

    5)list和set集合的区别
    有序性 List保证按插入顺序排序
    Set存储和取出顺序不一致
    唯一性 List可以重复
    Set元素唯
    获取元素 Iist可以通过索引直接操作元素
    Set不能根据索引获取元素

     

posted @ 2025-04-10 15:51  KLAPT  阅读(20)  评论(0)    收藏  举报