Java集合类

本文遵循BY-SA版权协议,转载请附上原文出处链接。


本文作者: 黑伴白

本文链接: http://heibanbai.com.cn/posts/aef82664/

Java集合类

Java 集合类是 Java 标准库中用于存储和操作数据的重要工具。它们提供了多种数据结构和算法,方便开发者处理各种数据需求。Java 集合类主要分为两大类:CollectionMap。以下是详细的说明、定义、使用方法和区别。


1. 集合类概述

Java 集合框架主要包含以下接口和类:

(1)Collection 接口

  • List:有序集合,允许重复元素。
  • Set:无序集合,不允许重复元素。
  • Queue:队列,支持先进先出(FIFO)或优先级排序。

(2)Map 接口

  • Map:键值对集合,键不允许重复。

2. 常用集合类

(1)List 接口的实现类

  1. ArrayList

    • 特点:基于动态数组实现,支持随机访问,插入和删除效率较低。
    • 定义
      1
      List<String> list = new ArrayList<>();
    • 常用方法
      1
      2
      3
      list.add("A"); // 添加元素
      list.get(0); // 获取元素
      list.remove(0);// 删除元素
  2. LinkedList

    • 特点:基于双向链表实现,插入和删除效率高,随机访问效率低。
    • 定义
      1
      List<String> list = new LinkedList<>();
    • 常用方法
      1
      2
      3
      list.add("A"); // 添加元素
      list.get(0); // 获取元素
      list.remove(0);// 删除元素
  3. Vector

    • 特点:线程安全的动态数组,性能较低。
    • 定义
      1
      List<String> list = new Vector<>();

(2)Set 接口的实现类

  1. HashSet

    • 特点:基于哈希表实现,无序,不允许重复元素。
    • 定义
      1
      Set<String> set = new HashSet<>();
    • 常用方法
      1
      2
      3
      set.add("A"); // 添加元素
      set.contains("A"); // 判断是否包含元素
      set.remove("A"); // 删除元素
  2. TreeSet

    • 特点:基于红黑树实现,元素有序(自然排序或自定义排序)。
    • 定义
      1
      Set<String> set = new TreeSet<>();
  3. LinkedHashSet

    • 特点:基于哈希表和链表实现,保持插入顺序。
    • 定义
      1
      Set<String> set = new LinkedHashSet<>();

(3)Queue 接口的实现类

  1. LinkedList

    • 特点:可以作为队列使用。
    • 定义
      1
      Queue<String> queue = new LinkedList<>();
    • 常用方法
      1
      2
      3
      queue.offer("A"); // 添加元素
      queue.poll(); // 移除并返回队头元素
      queue.peek(); // 返回队头元素
  2. PriorityQueue

    • 特点:基于优先级堆实现,元素按优先级排序。
    • 定义
      1
      Queue<String> queue = new PriorityQueue<>();

(4)Map 接口的实现类

  1. HashMap

    • 特点:基于哈希表实现,键值对无序,允许 null 键和 null 值。
    • 定义
      1
      Map<String, Integer> map = new HashMap<>();
    • 常用方法
      1
      2
      3
      map.put("A", 1); // 添加键值对
      map.get("A"); // 获取值
      map.remove("A"); // 删除键值对
  2. TreeMap

    • 特点:基于红黑树实现,键值对有序(自然排序或自定义排序)。
    • 定义
      1
      Map<String, Integer> map = new TreeMap<>();
  3. LinkedHashMap

    • 特点:基于哈希表和链表实现,保持插入顺序。
    • 定义
      1
      Map<String, Integer> map = new LinkedHashMap<>();

3. 集合类的区别

集合类 特点 适用场景
ArrayList 动态数组,随机访问快,插入删除慢 需要频繁访问元素的场景
LinkedList 双向链表,插入删除快,随机访问慢 需要频繁插入删除的场景
HashSet 无序,不允许重复元素 需要去重的场景
TreeSet 有序,不允许重复元素 需要排序的场景
HashMap 键值对无序,允许 null 键和值 需要快速查找键值对的场景
TreeMap 键值对有序 需要排序键值对的场景
PriorityQueue 优先级队列,元素按优先级排序 需要按优先级处理元素的场景

4. 集合类的选择

  1. 需要有序且允许重复:使用 ArrayListLinkedList
  2. 需要去重:使用 HashSetTreeSet
  3. 需要键值对存储:使用 HashMapTreeMap
  4. 需要优先级处理:使用 PriorityQueue

5. 示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import java.util.*;

public class CollectionExample {
public static void main(String[] args) {
// ArrayList 示例
List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
System.out.println("ArrayList: " + list);

// HashSet 示例
Set<String> set = new HashSet<>();
set.add("A");
set.add("B");
set.add("A"); // 重复元素不会被添加
System.out.println("HashSet: " + set);

// HashMap 示例
Map<String, Integer> map = new HashMap<>();
map.put("A", 1);
map.put("B", 2);
System.out.println("HashMap: " + map);
}
}

通过以上内容,你可以全面了解 Java 集合类的定义、使用方法和区别。如果有更多问题,欢迎随时提问!


蚂蚁🐜再小也是肉🥩!


Java集合类
http://heibanbai.com.cn/posts/aef82664/
作者
黑伴白
发布于
2024年5月4日
许可协议

“您的支持,我的动力!觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭”

微信二维码

微信支付

支付宝二维码

支付宝支付