当前位置: 首页 > article >正文

Java中的集合

目录

1. 集合框架的核心接口

(1) Collection 接口

(2) Map 接口

2. List 接口的实现类

(1) ArrayList

(2) LinkedList

(3) Vector

(4) Stack

3. Set 接口的实现类

(1) HashSet

(2) LinkedHashSet

(3) TreeSet

4. Queue 接口的实现类

(1) LinkedList

(2) PriorityQueue

5. Map 接口的实现类

(1) HashMap

(2) LinkedHashMap

(3) TreeMap

(4) Hashtable

其它. 工具类

(1) Collections

(2) Arrays

并发集合

(1) ConcurrentHashMap

(2) CopyOnWriteArrayList

总结


在 Java 中,集合(Collection)是用于存储和操作一组对象的框架。Java 集合框架(Java Collections Framework)提供了丰富的接口和类,用于处理不同类型的集合。以下是 Java 中常见的集合分类及其实现类

1. 集合框架的核心接口

Java 集合框架的核心接口位于 java.util 包中,主要包括:

(1) Collection 接口
  • 是所有集合类的根接口。

  • 主要子接口:

    • List:有序且允许重复元素的集合。

    • Set:无序且不允许重复元素的集合。

    • Queue:队列,遵循先进先出(FIFO)原则。

(2) Map 接口
  • 存储键值对(key-value pairs),键不允许重复。

  • 不是 Collection 的子接口,但属于集合框架的一部分

2. List 接口的实现类

List 是有序集合,允许重复元素。

(1) ArrayList
  • 基于动态数组实现。

  • 查询快,增删慢。

  • 线程不安全。

  • 示例:

List<String> list = new ArrayList<>();
list.add("App");
list.add("Bana");

 

public class Main {
    public static void main(String[] args) {
        ArrayList<Integer> numbers = new ArrayList<>();
        numbers.add(1);
        numbers.add(2);
        numbers.add(3);
        numbers.remove(1); // 删除索引为1的元素(即数字2)
        System.out.println(numbers); // 输出:[1, 3]
    }
}
(2) LinkedList
  • 基于双向链表实现。

  • 增删快,查询慢。

  • 可以用作队列或栈。

  • 示例:

    List<String> list = new LinkedList<>();
    list.add("Apple");
    list.add("Banana");
    (3) Vector
  • 类似于 ArrayList,但线程安全。

  • 性能较低,已逐渐被 ArrayList 取代。

  • 示例:

List<String> list = new Vector<>();
list.add("Apple");
list.add("Banana");
(4) Stack
  • Vector 的子类,实现栈结构(后进先出,LIFO)

Stack<String> stack = new Stack<>();
stack.push("Apple");
stack.push("Banana");
stack.pop(); // 返回 "Banana"

3. Set 接口的实现类

Set 是无序集合,不允许重复元素。

(1) HashSet
  • 基于哈希表实现。

  • 查询速度快,元素无序。

  • 示例

Set<String> set = new HashSet<>();
set.add("Apple");
set.add("Banana");
(2) LinkedHashSet
  • 基于哈希表和链表实现。

  • 元素按插入顺序排序。

  • 示例

Set<String> set = new LinkedHashSet<>();
set.add("Apple");
set.add("Banana");
(3) TreeSet
  • 基于红黑树实现。

  • 元素按自然顺序或自定义顺序排序。

  • 示例:

Set<String> set = new TreeSet<>();
set.add("Apple");
set.add("Banana");

4. Queue 接口的实现类

Queue 是队列,遵循先进先出(FIFO)原则。

(1) LinkedList

(2) LinkedHashMap

  • 可以用作队列。

  • 示例:

  • Queue<String> queue = new LinkedList<>();
    queue.offer("Apple");
    queue.offer("Banana");
    queue.poll(); // 返回 "Apple"
    (2) PriorityQueue
  • 基于优先级堆实现。

  • 元素按优先级排序。

  • 示例

  • Queue<String> queue = new PriorityQueue<>();
    queue.offer("Apple");
    queue.offer("Banana");
    queue.poll(); // 返回 "Apple"

    5. Map 接口的实现类

    Map 存储键值对,键不允许重复。

    (1) HashMap
  • 基于哈希表实现。

  • 键值对无序。

  • Map<String, Integer> map = new HashMap<>();
    map.put("Apple", 1);
    map.put("Banana", 2);

  • 基于哈希表和链表实现。

  • 键值对按插入顺序排序。

  • Map<String, Integer> map = new LinkedHashMap<>();
    map.put("Apple", 1);
    map.put("Banana", 2);

 

(3) TreeMap
  • 基于红黑树实现。

  • 键值对按自然顺序或自定义顺序排序。

  • 示例:

    Map<String, Integer> map = new TreeMap<>();
    map.put("Apple", 1);
    map.put("Banana", 2);
(4) Hashtable

(2) Arrays

  • 类似于 HashMap,但线程安全。

  • 性能较低,已逐渐被 HashMap 取代。

  • 示例:

    Map<String, Integer> map = new Hashtable<>();
    map.put("Apple", 1);
    map.put("Banana", 2);

    其它. 工具类

  • Java 集合框架还提供了一些工具类,用于操作集合。

    (1) Collections
  • 提供静态方法操作集合,如排序、查找、反转等。

  • 示例:

  • List<String> list = new ArrayList<>();
    list.add("Apple");
    list.add("Banana");
    Collections.sort(list); // 排序
  • 提供静态方法操作数组,如排序、查找等。

  • 示例:

    String[] array = {"Apple", "Banana"};
    Arrays.sort(array); // 排序

    并发集合

    Java 还提供了一些线程安全的集合类,位于 java.util.concurrent 包中。

    (1) ConcurrentHashMap
  • 线程安全的 HashMap

  • Map<String, Integer> map = new ConcurrentHashMap<>();
    map.put("Apple", 1);
    map.put("Banana", 2);
    (2) CopyOnWriteArrayList
  • 线程安全的 ArrayList

  • 示例:

    List<String> list = new CopyOnWriteArrayList<>();
    list.add("Apple");
    list.add("Banana");

  • 总结

    Java 集合框架提供了丰富的接口和类,用于处理不同类型的集合。以下是常用集合的分类:

    接口实现类特点
    ListArrayListLinkedList有序,允许重复
    SetHashSetTreeSet无序,不允许重复
    QueueLinkedListPriorityQueue队列,先进先出或优先级排序
    MapHashMapTreeMap键值对,键不允许重复
    并发集合ConcurrentHashMap线程安全

    根据实际需求选择合适的集合类,可以提高代码的效率和可读性。


http://www.kler.cn/a/573983.html

相关文章:

  • 国产ARM主机安装Ansible
  • vue3的npm配置修改源
  • DeepSeek携手防爆对讲机,大胆探索石化行业智能化升级
  • c#实现Modbus TCP/IP与RS 485数据交换的实例
  • 深入理解设计模式中的单例模式(Singleton Pattern)
  • 人工智能之数学基础:伴随矩阵
  • redis菜鸟教程
  • 【Linux篇】版本控制器-Git
  • nvidia驱动升级-ubuntu 1804
  • blender 渲染obj
  • 开发社交陪玩app小程序
  • 前端流式输出深度解析:技术原理、实战应用与性能优化
  • 计算光学成像与光学计算概论
  • GCC RISCV 后端 -- cc1 入口
  • 【五.LangChain技术与应用】【30.LangChain Agent小案例2:复杂场景下的代理设计】
  • 客户端及时通讯系统(1)
  • 【YOLOv12改进trick】StarBlock引入YOLOv12,创新涨点优化,含创新点Python代码,方便发论文
  • postman--接口测试工具安装和使用教程
  • LinkedList 双向链表
  • VEC系列-RabbitMQ 入门笔记