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

Java 集合框架

一、引言

在 Java 编程中,集合是一种非常重要的数据结构,它可以用来存储和管理一组对象。Java 集合框架提供了一套丰富的接口和类,用于处理不同类型的集合,如列表、集合、映射等。通过使用集合框架,开发者可以更高效地处理数据,提高代码的可维护性和可扩展性。

二、Java 集合框架概述

Java 集合框架主要由两个接口派生而来:CollectionMapCollection 接口是所有集合类的根接口,它定义了集合的基本操作,如添加、删除、遍历等。Map 接口则用于存储键值对,每个键对应一个值。

2.1 集合框架的层次结构

Java 集合框架的主要层次结构如下:

  • Collection 接口
    • List 接口:有序集合,允许重复元素,常见的实现类有 ArrayListLinkedList 等。
    • Set 接口:无序集合,不允许重复元素,常见的实现类有 HashSetTreeSet 等。
    • Queue 接口:队列,遵循先进先出(FIFO)原则,常见的实现类有 LinkedListPriorityQueue 等。
  • Map 接口:存储键值对,键是唯一的,常见的实现类有 HashMapTreeMap 等。

三、List 接口及其实现类

3.1 List 接口概述

List 接口是 Collection 接口的子接口,它表示一个有序的集合,允许存储重复的元素。List 接口提供了根据索引访问元素、插入元素、删除元素等操作。

3.2 ArrayList

ArrayListList 接口的一个动态数组实现,它可以自动调整大小以容纳更多的元素。ArrayList 支持随机访问,即可以通过索引快速访问元素,但在插入和删除元素时效率较低。

3.2.1 ArrayList 的基本操作
import java.util.ArrayList;
import java.util.List;

public class ArrayListExample {
   
    public static void main(String[] args) {
   
        // 创建一个 ArrayList 对象
        List<String> list = new ArrayList<>();

        // 添加元素
        list.add("Apple");
        list.add("Banana");
        list.add("Cherry");

        // 访问元素
        System.out.println("第一个元素是:" + list.get(0));

        // 修改元素
        list.set(1, "Grape");

        // 删除元素
        list.remove(2);

        // 遍历元素
        for (String fruit : list) {
   
            System.out.println(fruit);
        }
    }
}
3.2.2 ArrayList 的优缺点
  • 优点:支持随机访问,访问元素的时间复杂度为 O(1);可以自动调整大小。
  • 缺点:插入和删除元素的效率较低,时间复杂度为 O(n)。

3.3 LinkedList

LinkedListList 接口的一个链表实现,它使用双向链表来存储元素。LinkedList 在插入和删除元素时效率较高,但随机访问元素的效率较低。

3.3.1 LinkedList 的基本操作
import java.util.LinkedList;
import java.util.List;

public class LinkedListExample {
   
    public static void main(String[] args) {
   
        // 创建一个 LinkedList 对象
        List<String> list = new LinkedList<>();

        // 添加元素
        list.add("Apple");
        list.add("Banana");
        list.add("Cherry");

        // 在指定位置插入元素
        list.add(1, "Grape");

        // 删除元素
        list.remove("Banana");

        // 遍历元素
        for (String fruit : list) {
   
            System
http://www.dtcms.com/a/78641.html

相关文章:

  • 基于FPGA的DDS连续FFT 仿真验证
  • Ubuntu Qt: no service found for - “org.qt-project.qt.mediaplayer“
  • 第14周-Seq2Seq模型-NLP
  • 新型教材≠免设计课程
  • yt-dlp工具下载视频使用方法
  • VMware上调整centos终端的背景颜色
  • navicat忘记已经连接过的数据库密码的操作步骤
  • 论文略读(2025.3.18-更新中)
  • 盘泰UV种植体:抗老化新科技,焕发种植牙新活力
  • Xilinx系列FPGA视频采集转HDMI2.0输出,基于HDMI 1.4/2.0 Transmitter Subsystem方案,提供6套工程源码和技术支持
  • 设计模式之建造者模式
  • 【深度学习入门_机器学习理论】支持向量机(SVM)
  • 【总结】Pytest vs Behave,BDD 测试框架哪家强?
  • SpringSecurity配置(自定义认证过滤器)
  • 基于deepseek的智能语音客服【第三讲】知识库封装
  • Rust会取代Java吗?Rust与Java对比
  • 【商城实战(49)】解锁小程序端适配与优化,让商城飞起来
  • druid开启防火墙之后的bug
  • 【MySQL】架构
  • 从基础到实践(十九):DC/DC由来和工作原理介绍
  • 数据源支持远程Excel/CSV,数据集支持分组字段功能,DataEase开源BI工具v2.10.6 LTS版本发布
  • YOLO11报错:AttributeError: module ‘torch‘ has no attribute ‘OutOfMemoryError‘
  • Pytorch使用手册—自定义函数的双重反向传播与自定义函数融合卷积和批归一化(专题五十二)
  • 蓝桥杯算法分享:征服三座算法高峰
  • TensorFlow 的基本概念和使用场景
  • 该错误是由于`KuhnMunkres`类未定义`history`属性导致的
  • 【橘子websocket】如何基于vertx来构建websocket聊天室(上)
  • JS—原型与原型链:2分钟掌握原型链
  • 《AI大模型开发笔记》——企业RAG技术实战
  • 【杂记二】git, github, vscode等