Java Collection(集合) 接口

Date: 2025-05-21 20:21:32 author: lijianzhan

Java 集合框架提供了一组接口和类,以实现各种数据结构和算法。

以下是关于 Java 集合的核心内容说明:

        /*** Java Collection Framework 说明:** 在 Java 中,集合(Collection) 是一个核心的编程概念,用于存储、管理和操作一组对象。Java 集合框架(Java Collections Framework, JCF)提供了一套标准化的接口和类,使得开发者可以高效地处理数据集合(如列表、集合、队列、映射等)* Java 集合框架基于接口设计的,并且分为了两大类分别是Collection接口和Map接口** Collection 接口(说明:存储单一元素)特点:*  下面三种接口是Collection接口的子接口*  1.List:*      1.有序排列*      2.允许重复*      3.如 ArrayList, LinkedList(ps:LinkedList类提供了双向链接列表数据结构的实现)*  2.Set:*      1.无序排列*      2.不允许重复*      3.如 HashSet, TreeSet*  3.Queue:*      1.队列*      2.先进先出(FIFO)*      3.如 LinkedList, PriorityQueue** Map 接口(说明:Map接口允许元素以键/值对(Key-Value)的形式存储。键是唯一的名称,可用于访问map中的特定元素。而且,每个键都有一个与之关联的值)特点:*  1.键唯一*  2.值可重复*  3.如 HashMap, TreeMap** */
  1. 在Java中,List接口是一个有序的集合,它允许我们按顺序存储和访问元素:
    为了使用List接口的功能,我们可以使用以下类:
    1.数组列表(ArrayList类)
    2.链表(LinkedList类)
    3.向量(vector类)
    4.堆栈(Stack类)

(1)List 接口的实现类

import java.util.ArrayList;
import java.util.List;class Main {public static void main(String[] args){/** ArrayList:*  1.基于动态数组实现*  2.线程不安全,适用于单线程环境*  3.可以包含重复的元素*/List<Integer> list = new ArrayList<>();list.add(1);list.add(2);list.add(3);System.out.println("List: " + list);//从列表中访问元素int number = list.get(2);System.out.println("访问元素: " + number);//使用indexOf()方法int index = list.indexOf(2);System.out.println("位置3的元素是 " + index);//从列表中删除元素int removedNumber = list.remove(1);System.out.println("删除元素: " + removedNumber);}
}
输出结果示例:

在这里插入图片描述
(2)List 接口的实现类

import java.util.LinkedList;
import java.util.ListIterator;class Main {public static void main(String[] args){/** ArrayList:*  1.基于双向链表实现*  2.实现了 Deque 接口,可用作队列或栈*  3.可以包含重复的元素*///创建整数类型的链表LinkedList<Integer> linkedList = new LinkedList<>();linkedList.add(1);linkedList.add(2);System.out.println("LinkedList: " + linkedList);//从链表中获取元素int number = linkedList.get(1);System.out.print("索引1处的元素: " + number);//创建字符串类型的链表LinkedList<String> linkedList2 = new LinkedList<>();//将元素添加到 LinkedList2linkedList2.add("Dog");linkedList2.add("Cat");linkedList2.add("Horse");System.out.println("linkedList2: " + linkedList2);//使用索引添加元素到 LinkedList2linkedList2.add(0,"Danger");linkedList2.add(1,"Monkey");linkedList2.add(2,"Duck");System.out.println("linkedList2: " + linkedList2);// 将一个链表添加到另一个链表,新建animals链表LinkedList<String> animals = new LinkedList<>();animals.add("Crocodile");//把 linkedList2 的所有元素都添加到 animals 上animals.addAll(linkedList2);System.out.println("Animals: " + animals);//创建ListIterator对象ListIterator<String> listIterate = animals.listIterator();listIterate.add("Dog");listIterate.add("Cat");System.out.println("listIterate: " + animals);// 使用iterator()方法 访问元素while(listIterate.hasNext()) {System.out.print(listIterate.next());System.out.print(", ");}}
}
输出结果示例:

在这里插入图片描述

  1. Set集合不能包含重复的元素:
    为了使用Set接口的功能,我们可以使用以下类:
    1.HashSet
    2.LinkedHashSet
    3.EnumSet
    4.TreeSet
    Set 接口的实现类:
    (1)HashSet
import java.util.HashSet;
import java.util.Set;class Main {public static void main(String[] args){/** HashSet:*  1.基于哈希表实现,无序,插入/查询时间复杂度为 O(1)*  2.依赖 hashCode() 和 equals() 方法判断元素是否重复。*/// 创建setSet<Integer> setList = new HashSet<>();setList.add(10);// 重复元素会被忽略setList.add(10);System.out.println(setList);}
}

代码运行结果:
在这里插入图片描述

(2)TreeSet

import java.util.TreeSet;class Main {public static void main(String[] args){/** TreeSet:*  1.基于红黑树实现,自然排序或自定义排序,插入/查询时间复杂度为 O(log n)*  2.元素必须实现 Comparable 接口或传入 Comparator*/// 创建TreeSetTreeSet<String> treeSet = new TreeSet<>();treeSet.add("Banana");treeSet.add("Apple"); // 自动按字母顺序排序System.out.println(treeSet);}
}

代码运行结果:
在这里插入图片描述
总结:Java 集合框架是处理数据的核心工具,能够理解其接口和实现类的特性,掌握集合的使用可以高效的编程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/84029.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何用ipmitool修改FRU信息?

如何用ipmitool修改FRU信息&#xff1f; FRU&#xff08;Field Replaceable Unit&#xff0c;现场可更换单元&#xff09;记录了服务器硬件的关键信息&#xff0c;如序列号、制造商、型号等。通过ipmitool修改FRU信息&#xff0c;常用于硬件维护、资产标签更新或调试场景。以下…

uniapp vue 开发微信小程序 分包梳理经验总结

嗨&#xff0c;我是小路。今天主要和大家分享的主题是“uniapp vue 开发微信小程序 分包梳理经验总结”。 在使用 UniAppvue框架开发微信小程序时&#xff0c;当项目比较大的时候&#xff0c;经常需要分包加载。它有助于控制主包的大小&#xff0c;从而提升小程序的启…

git合并多次commit提交

首先查看历史记录 git log 查看你想要合并的commit是哪些&#xff08;注意&#xff1a;这里是逆序&#xff0c;最上的是最新提交&#xff09; 找到当前想要合并的最后一个记录&#xff0c;复制该记录的下一个记录的 id&#xff08;黄色部分commit id&#xff09;&#xff0c…

系统架构设计(七):数据流图

定义 数据流图&#xff08;Data Flow Diagram, DFD&#xff09;是一种用于表示信息系统数据流转及处理过程的图形工具。 它反映系统功能及数据之间的关系&#xff0c;是结构化分析与设计的重要工具。 主要符号 符号说明描述举例方框外部实体&#xff08;源或终点&#xff09…

MAUI与XAML交互:构建跨平台应用的关键技巧

文章目录 引言1. 代码隐藏文件关联1.1 XAML文件与代码隐藏文件的关系1.2 部分类机制1.3 InitializeComponent方法1.4 XAML命名空间映射 2. 元素名称与x:Name属性2.1 x:Name属性的作用2.2 命名规则与最佳实践2.3 x:Name与x:Reference的区别2.4 编译过程中的名称处理 3. 在代码中…

php://filter的trick

php://filter流最常见的用法就是文件包含读取文件&#xff0c;但是它不止可以用来读取文件&#xff0c;还可以和RCE&#xff0c;XXE&#xff0c;反序列化等进行组合利用 filter协议介绍 php://filter是php独有的一种协议&#xff0c;它是一种过滤器&#xff0c;可以作为一个中…

微信小程序开发中,请求数据列表,第一次请求10条,滑动到最低自动再请求10条,后面请求的10条怎么加到第一次请求的10条后面?

在微信小程序中实现分页加载数据列表&#xff0c;可通过以下步骤将后续请求的10条数据追加到首次加载的数据之后&#xff1a; 实现步骤及代码示例 定义页面数据与参数 在页面的 data 中初始化存储列表、页码、加载状态及是否有更多数据的标识&#xff1a; Page({data: {list…

如何利用 Java 爬虫根据 ID 获取某手商品详情:实战指南

在电商领域&#xff0c;获取商品详情数据对于市场分析、选品上架、库存管理和价格策略制定等方面具有重要价值。某手作为国内知名的电商平台&#xff0c;提供了丰富的商品资源。通过 Java 爬虫技术&#xff0c;我们可以高效地根据商品 ID 获取某手商品的详细信息。本文将详细介…

电平匹配电路

1、为什么要电平匹配? 现在很多SOC器件为了降低功耗,都把IO口的电平设计成了1.8V,核电压0.85V,当这种SOC做主平台时,在做接口设计需要格外关注电平的匹配。单板中经常需要将1.8V的电平转换成3.3V或者转成5V。如果没有注意到输入和输出信号之间的电平匹配,系统就无法正常…

【技术揭秘】Profinet转RS485如何优化冲剪机的实时通信性能?​​

在现代工业自动化领域&#xff0c;通信协议是连接不同设备和系统的关键。RS485和Profinet是两种广泛使用的工业通信标准&#xff0c;它们各自拥有独特的特性和应用场景。本文将探讨如何通过一个小疆智控Profinet转RS485网关来优化冲剪机的应用&#xff0c;提高生产线的效率和可…

面经总目录——持续更新中

说明 本面经总结了校招时我面试各个公司的面试题目&#xff0c;每场面试后我都及时进行了总结&#xff0c;同时后期补充扩展了同类型的相近面试题&#xff0c;校招时从两个方向进行投递&#xff0c;视觉算法工程师和软件开发工程师&#xff08;C方向&#xff09;&#xff0c;所…

AI前端页面生成:deepsite、Qwen Web Dev

deepsite网页生成 https://huggingface.co/spaces/enzostvs/deepsite 落地页美观不错,默认用tailwindcss实现样式 提示词: AI 功能是核心,通过后端 server.js 实现。server.js 使用 Express 框架,依赖 @huggingface/inference 库与 Hugging Face 推理 API 交互,具体使用…

华为云鲲鹏型kC2云服务器——鲲鹏920芯片性能测评

华为云鲲鹏型kC2云服务器性能怎么样&#xff1f;性能很不错&#xff0c;鲲鹏通用计算增强型kC2实例是ARM架构的云服务器&#xff0c;CPU采用Huawei Kunpeng 920 2.9GHz主频&#xff0c;每个vCPU对应一个底层物理内核。华为云服务器网hwyfwq.com整理鲲鹏型kC2云服务器性能测评及…

Java 安全SPEL 表达式SSTI 模版注入XXEJDBCMyBatis 注入

https://github.com/bewhale/JavaSec https://github.com/j3ers3/Hello-Java-Sec https://mp.weixin.qq.com/s/ZO4tpz9ys6kCIryNhA5nYw #Java 安全 -SQL 注入 -JDBC&MyBatis -JDBC 1 、采用 Statement 方法拼接 SQL 语句 2 、 PrepareStatement 会对 SQL 语…

【VxWorks 实时操作系统(RTOS)】常用函数汇总

VxWorks 实时操作系统&#xff08;RTOS&#xff09;中的核心函数 1. taskSpawn 函数 功能&#xff1a;用于动态创建并激活一个新任务&#xff08;线程&#xff09;。参数解析&#xff08;以 VxWorks 为例&#xff09;&#xff1a;int taskSpawn(char *name, // 任务名…

【MySQL】数据库约束

MySQL(三)数据库约束 数据库约束 一、not null 二、default 三、unique 四、primary key 1.自增主键机制 1.1单服务器下 1.2分布式下 1.2.1时间戳 1.2.2主机编号 1.2.3随机因子 五、foreign key 1.∈关系维护 1.1父约子&#xff1a; 1.2子约父&#xff1a; 1.3…

VRRP 协议

一、前言 最近被问到一个VRRP的网络协议&#xff0c;一开始我是蒙蔽的状态&#xff0c;至于什么是VRRP&#xff0c;我后面查了一下&#xff0c;因为对于网络这方面我也不是很精通&#xff0c;见谅&#xff01; VRRP&#xff0c;全称叫虚拟路由冗余协议&#xff0c;是我孤陋寡闻…

打开小程序提示请求失败(小程序页面空白)

1、小程序代码是商城后台下载的还是自己编译的 &#xff08;1&#xff09;要是商城后台下载的&#xff0c;检查设置里面的域名是不是https的 &#xff08;2&#xff09;要是自己编译的&#xff0c;检查app.js里面的接口域名是不是https的&#xff0c;填了以后有没有保存 注&a…

Windows/MacOS WebStorm/IDEA 中开发 Uni-App 配置

文章目录 前言1. 安装 HBuilder X2. WebStorm/IDEA 安装 Uniapp Tool 插件3. 配置 Uniapp Tool 插件4. 运行 Uni-App 项目 前言 前端开发人员对 WebStorm 一定不陌生&#xff0c;但有时需要开发 Uni-App 的需求&#xff0c;就必须要采用 HBuilder X&#xff0c;如果不习惯 HBu…

第四十三节:人脸检测与识别-人脸识别基础 (Eigenfaces, Fisherfaces, LBPH)

引言 人脸识别技术是计算机视觉领域最具应用价值的方向之一,广泛应用于安防监控、身份认证、人机交互等领域。本文将通过OpenCV框架,深入解析人脸检测与识别的核心算法(Eigenfaces/Fisherfaces/LBPH),并提供完整的代码实现。 第一部分:人脸检测基础 1.1 人脸检测原理 …