Java 集合框架

devtools/2025/3/21 19:28:59/

一、引言

在 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 的基本操作
java">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 的基本操作
java">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.ppmy.cn/devtools/168649.html

相关文章

WEB攻防-PHP反序列化-字符串逃逸

目录 前置知识 字符串逃逸-减少 字符串逃逸-增多 前置知识 1.PHP 在反序列化时&#xff0c;语法是以 ; 作为字段的分隔&#xff0c;以 } 作为结尾&#xff0c;在结束符}之后的任何内容不会影响反序列化的后的结果 class people{ public $namelili; public $age20; } var_du…

跨系统投屏:Realme手机(远程)投屏到Linux系统的简单方法

家里长辈年纪上来了&#xff0c;有点老花眼&#xff0c;平常看手机总是觉得字体不够大&#xff0c;还一个劲儿地将手机拿很远。其实那台手机的字体已经调到最大了。 为了让长辈刷手机的时候可以轻松快乐一点&#xff0c;我们帮他将手机投屏到电脑上。毕竟电脑屏幕比手机大多了&…

正则表达式(可用于MySQL、C++、Python)

正则表达式&#xff08;Regular Expression&#xff0c;简称 regex 或 regexp&#xff09;是一种用于描述文本模式的字符串。它通过特定的语法规则&#xff0c;允许你匹配、搜索和操作字符串中的内容。 正则表达式可以用来&#xff1a; 匹配文本&#xff1a;可以在字符串中查…

【Linux】浅谈环境变量和进程地址空间

一、环境变量 基本概念 环境变量&#xff08;Environment Variables&#xff09;是操作系统提供的一种机制&#xff0c;用于存储和传递配置信息、系统参数、用户偏好设置等。 环境变量的作用 配置程序行为&#xff1a; 程序可以通过环境变量获取配置信息&#xff0c;例如日…

13-动态规划-最长公共子序列

题目 来源 24. 最长公共子序列 思路 不想打字&#xff0c;援引自最长公共子序列 (LCS) 详解例题模板&#xff08;全&#xff09;-CSDN博客 图示举例&#xff1a; 其余详见代码 代码 #include<bits/stdc.h> using namespace std; const int N110; int f[N][N]; int m…

每日一题----------文件流(创建文件方式三种)

创建文件对象相关构造器和方法&#xff1a; &#xff08;1&#xff09;new File&#xff08;String pathname&#xff09;//根据路径构建一个file对象。 &#xff08;2&#xff09;new File(File parent,String child)//根据父目录文件&#xff0b;子路径构建。 &#xff08…

Java 中 Vector 的底层数据结构及相关分析

1. Vector的底层数据结构 Vector 是 Java 早期提供的动态数组实现&#xff0c;底层基于 Object 数组(Object[] elementData) 进行存储。它的核心数据结构类似于 ArrayList&#xff0c;但 Vector 是线程安全的&#xff0c;通过 synchronized 关键字实现同步。 2. 实现原理 (1)…

鸿蒙应用程序包HAP的开发与使用

1、HAP是什么&#xff1f; HAP&#xff08;Harmony Ability Package&#xff09;是应用安装和运行的基本单元。HAP包是由代码、资源、第三方库、配置文件等打包生成的模块包&#xff0c;其主要分为两种类型&#xff1a;entry和feature。 entry&#xff1a;应用的主模块&#x…