常见的集合类型有哪些?

参考回答

Java 中常见的集合类型主要分为两大接口:CollectionMap

  • Collection 下的主要实现包括:
    • List:有序、可重复,如 ArrayListLinkedList
    • Set:无序、不可重复,如 HashSetTreeSet
    • Queue:用于队列操作,如 LinkedListPriorityQueue
  • Map 是另一种集合接口,用于存储键值对:
    • HashMapTreeMapLinkedHashMap

详细讲解与拓展

1. Collection 接口

  • List
    • 特点:元素有序,可以通过索引访问,允许重复元素。

    • 常见实现类:

    • ArrayList:底层是动态数组,查询快,但插入和删除慢。

    • LinkedList:底层是双向链表,插入和删除快,但查询慢。

    • 例子:

    List<String> list = new ArrayList<>();
    list.add("A");
    list.add("B");
    list.add("A"); // 允许重复
    System.out.println(list); // 输出:[A, B, A]
    
  • Set

    • 特点:元素无序,不允许重复。

    • 常见实现类:

    • HashSet:基于哈希表,插入、删除、查询速度快,但无序。

    • TreeSet:基于红黑树,元素自动排序,速度相对较慢。
    • LinkedHashSet:基于哈希表和链表,保证插入顺序。

    • 例子:

    Set<String> set = new HashSet<>();
    set.add("A");
    set.add("B");
    set.add("A"); // 重复元素被忽略
    System.out.println(set); // 输出:[A, B](无序)
    
  • Queue

    • 特点:先进先出(FIFO),主要用于排队场景。

    • 常见实现类:

    • PriorityQueue:元素按照优先级排序。

    • LinkedList:作为队列使用时,遵循 FIFO 规则。

    • 例子:

    Queue<Integer> queue = new LinkedList<>();
    queue.add(1);
    queue.add(2);
    queue.poll(); // 移除第一个元素
    System.out.println(queue); // 输出:[2]
    

2. Map 接口

  • 特点:用于存储键值对(key-value),键不能重复,值可以重复。

  • 常见实现类:

    • HashMap:基于哈希表,键值对无序。
    • TreeMap:基于红黑树,键值对按键自动排序。
    • LinkedHashMap:基于哈希表和链表,保证插入顺序。
  • 例子:
    Map<Integer, String> map = new HashMap<>();
    map.put(1, "A");
    map.put(2, "B");
    map.put(1, "C"); // 覆盖键为1的值
    System.out.println(map); // 输出:{1=C, 2=B}
    

3. 集合体系结构图

为了更好理解,可以参考以下简单的结构:

Collection
  |-- List
  |     |-- ArrayList
  |     |-- LinkedList
  |-- Set
  |     |-- HashSet
  |     |-- TreeSet
  |-- Queue
        |-- LinkedList
        |-- PriorityQueue
Map
  |-- HashMap
  |-- TreeMap
  |-- LinkedHashMap

4. 拓展:集合的选择

  • 如果需要快速查询:使用 HashSetHashMap
  • 如果需要排序:使用 TreeSetTreeMap
  • 如果需要保证插入顺序:使用 LinkedHashSetLinkedHashMap
  • 如果需要动态大小的数组:使用 ArrayList
  • 如果需要频繁插入删除:使用 LinkedList

发表评论

后才能评论