【Java入门教程】第二十讲:集合和常见操作

集合框架(Collection)是 Java 编程语言中一个非常重要的组成部分,它为存储和操作数据提供了一套灵活而强大的API。

本文将详细介绍Java集合框架的基本概念、常用接口和实现类,并通过代码示例来加深理解,帮助大家更好地掌握这一核心知识。

一、Java集合框架概述

Java集合框架主要包括两种类型的集合:List、Set和Map。其中,List、Set是继承自java.util.Collection接口的,而Map则是一个独立的接口。集合框架的设计遵循了Java的泛型原则,允许开发者在编译期间就确定集合中元素的类型,从而避免了类型转换的错误。

二、List接口

List接口代表了一个有序集合,每个元素都可以有一个索引。常用的实现类有ArrayListLinkedList

一) ArrayList

ArrayList是基于动态数组的数据结构,它允许我们随机访问集合中的元素,但在插入和删除操作时可能需要复制整个数组,因此这些操作的效率较低。

代码示例:

ArrayList<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Cherry");// 随机访问
String fruit = list.get(1); // 返回 "Banana"// 迭代遍历
for (String fruit : list) {System.out.println(fruit);
}

二) LinkedList

LinkedList实现了List接口,但它是基于双向链表的数据结构。这使得在链表的任何位置插入或删除元素都非常高效,但是随机访问元素的效率较低。

代码示例:

LinkedList<String> linkedList = new LinkedList<>();
linkedList.addFirst("Apple");
linkedList.addLast("Banana");// 在头部插入
linkedList.addFirst("Cherry");// 迭代遍历
Iterator<String> iterator = linkedList.iterator();
while (iterator.hasNext()) {String fruit = iterator.next();System.out.println(fruit);
}

三、 Set接口

Set接口代表了一个不允许重复元素的集合。常用的实现类有HashSetTreeSet

一) HashSet

HashSet是基于哈希表的实现,它提供了快速的查找、添加和删除操作。但是,由于哈希表的特性,HashSet不保证元素的顺序。

代码示例:

HashSet<String> set = new HashSet<>();
set.add("Apple");
set.add("Banana");
set.add("Cherry");// 检查元素是否存在
boolean contains = set.contains("Apple"); // 返回 true// 迭代遍历
for (String fruit : set) {System.out.println(fruit);
}

二) TreeSet

TreeSet是基于红黑树的实现,它可以确保元素处于排序状态。因此,TreeSet提供了有序的元素访问。

代码示例:

TreeSet<String> treeSet = new TreeSet<>();
treeSet.add("Apple");
treeSet.add("Banana");
treeSet.add("Cherry");// 有序迭代遍历
for (String fruit : treeSet) {System.out.println(fruit);
}

四、 Map接口

Map接口代表了一个键值对的集合,每个元素都由一个键和一个值组成。常用的实现类有HashMapTreeMap

一) HashMap

HashMap是基于哈希表的实现,它允许我们快速地根据键来访问值。但是,键值对中的键必须实现hashCodeequals方法,以确保哈希表的正确性。

代码示例:

HashMap<String, Integer> map = new HashMap<>();
map.put("Apple", 10);
map.put("Banana", 20);
map.put("Cherry", 30);// 访问值
Integer price = map.get("Apple"); // 返回 10// 迭代遍历
for (Map.Entry<String, Integer> entry : map.entrySet()) {String fruit = entry.getKey();Integer price = entry.getValue();System.out.println(fruit + " : " + price);
}

二) TreeMap

TreeMap是基于红黑树的实现,它可以根据键的自然顺序或者自定义的比较器来对键值对进行排序。

代码示例:

TreeMap<String, Integer> treeMap = new TreeMap<>(new Comparator<String>() {@Overridepublic int compare(String o1, String o2) {return Integer.compare(o1.length(), o2.length());}
});
treeMap.put("Apple", 10);
treeMap.put("Banana", 20);
treeMap.put("Cherry", 30);// 有序迭代遍历
for (Map.Entry<String, Integer> entry : treeMap.entrySet()) {String fruit = entry.getKey();Integer price = entry.getValue();System.out.println(fruit + " : " + price);
}

Java集合框架是Java程序员必须掌握的基础知识之一。通过本文的介绍和代码示例,希望能帮助大家更好地理解和使用集合框架,从而提高编程效率和代码质量。 

有帮助请点赞收藏呀~

【150 道精选 Java 高频面试题】请go公众号:码路向前 。

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

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

相关文章

Vue中生成二维码,使用现有的二维码库qrcode

要在Vue中生成二维码&#xff0c;你可以使用现有的二维码库&#xff0c;如qrcode。首先&#xff0c;你需要安装这个库。在你的项目目录下&#xff0c;运行以下命令&#xff1a; bash 复制 npm install qrcode --save 然后&#xff0c;在你的Vue组件中&#xff0c;你可以这样使…

ssm基于jsp的学生作业管理系统论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本学生作业管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信息…

C#(C Sharp)学习笔记_Enum枚举类型【十三】

什么是枚举类型 枚举类型(Enum) 是由基础整型数值类型的一组命名常量定义的值类型。枚举包含自己的值&#xff0c;但不能继承或传递继承。 语法 // enum enum_name // enum_name variable enum_name.enum_value// 定义一个枚举类型——例如&#xff1a; enum enum_name {va…

【MATLAB源码-第30期】基于matlab的内边界边缘检测算法。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 在计算机视觉领域&#xff0c;图像分割&#xff08;segmentation&#xff09;指的是将数字图像细分为多个图像子区域&#xff08;像素的集合&#xff09;&#xff08;也被称作超像素&#xff09;的过程。图像分割的目的是简化…

查找算法第1篇

查找&#xff0c;又称搜索&#xff0c;检索。 查找运算的主要操作是关键字的比较&#xff0c; 通常把查找过程中的平均比较次数(也称为平均查找长度) 作为衡量一个查找算法效率优劣的标准。 平均查找长度(Average Search. Length ASL) 的计算公式为 A S L ∑ i 1 n P n C i…

mysql常见故障

目录 1. 连接问题 2. 数据库无法启动 3. 数据库崩溃 4. 慢查询 5. 主从同步问题 6. 硬件故障 7. 日志问题 8. 其他常见问题 注意事项 1. ERROR 1045 (28000): Access denied for user userhost (using password: YES) 2. ERROR 2002 (HY000): Cant connect to local…

【DevOps】使用Filebeat收集华为云cce containerd日志

目录 1、背景2、containerd日志路径3、收集日志1、背景 将 Docker 换成 containerd 作为 Kubernetes (K8s) 集群中的容器运行时有以下几个好处: 性能提升: containerd 相较于 Docker,其设计更为精简,专注于容器的生命周期管理,没有Docker包含的其他额外服务如API服务器…

突破编程_C++_网络编程(TCPIP 四层模型(概述))

1 TCP/IP概述 1.1 TCP/IP的定义与起源 TCP/IP 协议&#xff0c;全称为 Transmission Control Protocol/Internet Protocol&#xff0c;中文名为传输控制协议/因特网互联协议&#xff0c;又名网络通讯协议。这是 Internet 最基本的协议&#xff0c;也是 Internet 国际互联网络…

【云原生篇】K8S之DaemonSet 详解

Kubernetes 的 DaemonSet 是一种特殊的工作负载控制器&#xff0c;它确保所有&#xff08;或某些特定的&#xff09;节点上都运行一个 Pod 的副本。当有新节点加入集群时&#xff0c;DaemonSet 会自动在新节点上添加相应的 Pod&#xff0c;当节点从集群中移除时&#xff0c;这些…

PWM模块的中断

在PWM模块中使用中断的主要目的是为了实现定时中断功能。PWM&#xff08;脉宽调制&#xff09;是一种通过调节信号的脉冲宽度来控制输出电压或电流的技术&#xff0c;在嵌入式系统中广泛应用于控制电机、LED亮度调节等领域。而在某些应用场景下&#xff0c;需要在PWM周期内定时…

sentinel与nacos集成

前言 sentinel的规则可以通过编码方式定义&#xff0c;也可以通过配置方式定义。sentinel-dashboard提供了界面维护功能&#xff0c;但是配置是存储在内存中的。因此需要进行持久化。 Sentinel自身就支持了多种不同的数据源来持久化规则配置&#xff0c;目前包括以下几种方式…

Swing中的FlowLayout/WrapLayout在打横排列时候如何做到置顶对齐

前言 最近在开发swing客户端时候碰到一个棘手的问题&#xff1a; Swing中的FlowLayout/WrapLayout在打横排列时候如何做到置顶对齐如果是vue或者react&#xff0c;一搜百度什么都出来了&#xff0c;swing的话&#xff0c;嗯。。。资料有点少而且大部分是stack overflow上面的…

Docker环境安装Postgresql数据库Posrgresql 15.6

宿主机是ubuntu 22.04版本 ubuntu宿主机上安装docker&#xff0c;参见官方文档https://docs.docker.com/engine/install/ubuntu/, docker-ce是社区版 docker-ee是企业版 1、检查Docker是否安装 rootODS1SPGOFSDEV:~# docker Command docker not found, but can be installed …

51单片机学习笔记12 SPI接口 使用1302时钟

51单片机学习笔记12 SPI接口 使用1302时钟 一、DS1302简介1. 功能特性2. 涓流充电3. 接口介绍时钟数据和控制线&#xff1a;电源线&#xff1a;备用电池连接&#xff1a; 二、寄存器介绍1. 控制寄存器2. 时间寄存器3. 日历/时钟寄存器 三、BCD码介绍四、DS1302时序1. 读时序2. …

大数据实验三-HBase编程实践

目录 一&#xff0e;实验内容 二&#xff0e;实验目的 三&#xff0e;实验过程截图及说明 1、安装HBase 2、配置伪分布式模式&#xff1a; 3、使用hbase的shell命令来操作表&#xff1a; 4、使用hbase提供的javaAPI来编程实现类似操作&#xff1a; 5、实验总结及心得体会…

如何降低AI功耗? —— 超低功耗的仿生硬件

一、背景 仿生硬件&#xff08;Bionic Hardware&#xff09;这一术语通常指的是受自然界的生物系统启发而设计制造的电子或机械硬件设备&#xff0c;它们在功能、结构、材料、能源效率等方面模仿生物体的特性&#xff0c;以实现更高效、智能、自适应或环境友好的性能。在人工智…

unity之 “Allow ‘unsafe‘ code“ 在哪里。

导入unity中的代码&#xff0c;出现如下错误&#xff0c;该如何解决&#xff1f; Unsafe code may only appear if compiling with /unsafe. Enable "Allow unsafe code" in Player Settings to fix this error 解决这个问题&#xff0c;只需要设置就可以。 设置的地…

达梦体系结构:数据库文件

达梦体系结构&#xff1a;数据库文件 存储结构表空间与数据文件配置参数文件控制文件其他数据库文件 达梦数据库由数据库和实例构成&#xff1a; 数据库是指磁盘上存放的数据库文件的集合&#xff0c;包括参数文件、控制文件、数据文件、日志文件等。实例是指一组运行的数据库…

创意绘图画画小程序:融合白板黑板功能,开启绘画新纪元

创意绘图画画小程序&#xff1a;融合白板黑板功能&#xff0c;开启绘画新纪元 在数字化时代的浪潮下&#xff0c;艺术创作正逐渐摆脱传统形式的束缚&#xff0c;以更加多元、便捷的方式走进人们的生活。其中&#xff0c;创意绘图画画小程序以其独特的白板画、黑板画功能&#…

了解next.js框架特点,以及总结Next.js 常用的api和用法

Next.js 是一个流行的 React 框架,它提供了很多开箱即用的功能,如服务器渲染、静态导出、代码拆分等,让开发者可以更轻松地构建 React 应用。下面是对 Next.js 的深度解析,以及附带的代码实例。 1.Next.js 框架特点 1. 服务器渲染(Server-side Rendering,SSR) Next.j…