Java-集合框架-List,Set,Map,队列
文章目录
- Java集合框架:List,Set,Map,队列
- Java集合框架是什么?
- 如何使用?
- List
- Set
- Map
- 队列
- 什么场景使用?
- 优缺点是什么?
- List
- Set
- Map
- 队列
- Java示例
- List示例
- Set示例
- Map示例
- 队列示例
- 对比
Java集合框架:List,Set,Map,队列
Java集合框架是什么?
Java集合框架是一组用于存储和操作数据的类和接口。它提供了不同类型的集合,如List,Set,Map和队列,以满足不同的需求。
- List:有序的集合,允许重复的元素。
- Set:无序的集合,不允许重复的元素。
- Map:键值对的集合,每个元素都包含一个键和一个值。
- 队列:先进先出(FIFO)的集合,用于处理按顺序排列的元素。
如何使用?
List
List接口的常用实现类有ArrayList和LinkedList。可以使用以下步骤使用List集合:
- 导入List类和实现类的包:
import java.util.List;
和import java.util.ArrayList;
- 创建List对象:
List<String> list = new ArrayList<>();
- 添加元素:
list.add("元素1");
- 访问元素:
String element = list.get(0);
- 遍历集合:使用for循环或者迭代器遍历集合。
Set
Set接口的常用实现类有HashSet和TreeSet。可以使用以下步骤使用Set集合:
- 导入Set类和实现类的包:
import java.util.Set;
和import java.util.HashSet;
- 创建Set对象:
Set<String> set = new HashSet<>();
- 添加元素:
set.add("元素1");
- 判断元素是否存在:
boolean contains = set.contains("元素1");
- 遍历集合:使用for-each循环遍历集合。
Map
Map接口的常用实现类有HashMap和TreeMap。可以使用以下步骤使用Map集合:
- 导入Map类和实现类的包:
import java.util.Map;
和import java.util.HashMap;
- 创建Map对象:
Map<String, Integer> map = new HashMap<>();
- 添加键值对:
map.put("键1", 1);
- 获取值:
int value = map.get("键1");
- 遍历集合:使用for-each循环遍历键或值。
队列
队列接口的常用实现类有LinkedList和PriorityQueue。可以使用以下步骤使用队列:
- 导入队列类和实现类的包:
import java.util.Queue;
和import java.util.LinkedList;
- 创建队列对象:
Queue<String> queue = new LinkedList<>();
- 添加元素:
queue.add("元素1");
- 获取并删除队列头部的元素:
String element = queue.poll();
- 遍历队列:使用迭代器遍历队列。
什么场景使用?
- List:适用于需要按照元素的插入顺序进行操作的场景,可以包含重复的元素。
- Set:适用于需要保持唯一性的元素集合,不允许重复的元素。
- Map:适用于需要通过键值对进行操作的场景,每个键都是唯一的。
- 队列:适用于需要按照先进先出顺序处理元素的场景。
优缺点是什么?
List
优点:
- 可以按照插入顺序访问元素。
- 可以包含重复的元素。
缺点:
- 在大型数据集合中查找元素的效率较低。
Set
优点:
- 元素不重复,保持唯一性。
- 查找元素的效率较高。
缺点:
- 无序,不能按照插入顺序访问元素。
Map
优点:
- 可以通过键值对进行操作,便于查找和修改元素。
- 键是唯一的,保持唯一性。
缺点:
- 无序,不能按照插入顺序访问元素。
队列
优点:
- 按照先进先出的顺序处理元素。
缺点:
- 无法在中间插入或删除元素。
Java示例
List示例
import java.util.List;
import java.util.ArrayList;public class ListExample {public static void main(String[] args) {List<String> list = new ArrayList<>();list.add("元素1");list.add("元素2");list.add("元素3");for (String element : list) {System.out.println(element);}}
}
Set示例
import java.util.Set;
import java.util.HashSet;public class SetExample {public static void main(String[] args) {Set<String> set = new HashSet<>();set.add("元素1");set.add("元素2");set.add("元素3");for (String element : set) {System.out.println(element);}}
}
Map示例
import java.util.Map;
import java.util.HashMap;public class MapExample {public static void main(String[] args) {Map<String, Integer> map = new HashMap<>();map.put("键1", 1);map.put("键2", 2);map.put("键3", 3);for (String key : map.keySet()) {int value = map.get(key);System.out.println(key + ": " + value);}}
}
队列示例
import java.util.Queue;
import java.util.LinkedList;public class QueueExample {public static void main(String[] args) {Queue<String> queue = new LinkedList<>();queue.add("元素1");queue.add("元素2");queue.add("元素3");while (!queue.isEmpty()) {String element = queue.poll();System.out.println(element);}}
}
以上示例分别展示了List,Set,Map和队列的基本用法。根据具体需求选择合适的集合类型,以提高代码的效率和可读性。
对比
维度 | List | Set | Map | 队列 |
---|---|---|---|---|
实现类 | ArrayList、LinkedList、Vector等 | HashSet、LinkedHashSet、TreeSet等 | HashMap、LinkedHashMap、TreeMap等 | LinkedList、PriorityQueue等 |
元素 | 有序的、可重复的 | 无序的、不可重复的 | 以键值对的形式存储、键不可重复、值可重复的数据结构 | 先进先出的数据结构、支持插入、删除、查找等操作 |
存储 | 按索引顺序存储 | 无序存储 | 以键值对的形式存储 | 按插入顺序存储 |
访问 | 可以通过索引值对列表进行访问和修改 | 不能直接访问、可以通过迭代器进行访问 | 可以通过键值对进行访问和修改 | 可以通过队列头和队列尾进行访问和修改 |
性能 | 读取速度快,添加和删除速度较慢 | 添加和删除速度快,读取速度较慢 | 读取速度快,添加和删除速度较慢 | 添加和删除速度快,读取速度较慢 |
应用 | 适用于需要按索引顺序访问的情况 | 适用于需要去重的情况 | 适用于需要以键值对形式存储数据的情况 | 适用于先进先出的数据操作的情况 |
相关文章:
Java-集合框架-List,Set,Map,队列
文章目录 Java集合框架:List,Set,Map,队列Java集合框架是什么?如何使用?ListSetMap队列 什么场景使用?优缺点是什么?ListSetMap队列 Java示例List示例Set示例Map示例队列示例 对比 J…...

第一章_线程基础知识
先拜拜大神 Doug Lea(道格.利) java.util.concurrent在并发编程中使用的工具包 为什么学习并用好多线程极其重要 硬件方面 摩尔定律失效 摩尔定律:它是由英特尔创始人之一Gordon Moore(戈登.摩尔)提出来的。其内容为…...
linux(centos7)定时关机解决方案
使用场景与痛点: 根据实际需求,每个星期五都要关闭服务器若干,痛点如下: 1是服务器比较多,按起来麻烦。2是因为周五时间点特殊,着急下班容易忘记关闭服务器。那些要关注才能看的博客,不是我喷&a…...
reactnative笔记
1、React Native 搭建开发环境和创建新项目并运行的详细教程_react项目怎么运行_AaVictory.的博客-CSDN博客 环境搭建遇到报错靠下面两个解决的(模拟器的adb和reactnative的adb版本不同,且都配置环境) 2、 adb server version (41) doesn‘t…...

软件架构模式+系统架构
架构模式对比 分层模式 一般信息系统中最常见的4层划分如下: Presentation layer 表示层(也就是UI层)Application layer 应用层(也就是服务层)Business logic layer 业务逻辑层(也就是领域层)…...

SQL 语句学习总结:
1. 四范式&&范式好处: 数据库范式是数据表设计的规范,在范式规范下,数据库里每个表存储的重复数据降到最少(这有助于数据的一致性维护),同时在数据库范式下,表和表之间不再有很强的数据…...

【Linux】简单的小程序:进度条
在学习进度条之前,需要学一点预备知识。 1. 预备知识 回车换行 现在的换行符(\n)其实就是回车式换行符,另起一行,光标指向最新一行的开头。回车符(\r)是光标指向这一行的开头。 缓冲区 &a…...

Ansible之playbooks剧本
文章目录 一.playbooks介绍1.playbooks简述2.playbooks剧本格式3.playbooks组成部分4.运行playbooks及检测文件配置 二.模块实战实例1.playbooks模块实战实例2.vars模块实战实例3.指定远程主机sudo切换用户4.when模块实战实例5.with_items迭代模块实战实例6.Templates 模块实战…...

在云原生时代,构建高效的大数据存储与分析平台
文章目录 1. **选择适当的数据存储技术:**2. **采用分布式架构:**3. **数据分区和索引:**4. **采用列式存储:**5. **数据压缩和编码:**6. **使用缓存技术:**7. **数据分片和复制:**8. **自动化运…...
第六章,线性变换,1-线性变换、表示矩阵、线性算子
第六章,线性变换,1-线性变换、表示矩阵、线性算子 线性变换表示矩阵 线性算子 R 2 R^2 R2中特殊的线性变换旋转变换算子反射变换算子投影变换算子伸压变换算子剪切变换算子 玩转线性代数(32)线性变换的相关概念的笔记,相关证明以及例子见原文…...
15个关于AI的Github库
这里是我们精选的创新项目列表(排名不分先后),这些项目正在机器学习和人工智能领域蓬勃发展 1:privateGPT 作者:imartinezGithub 星数:16.7K描述:利用LLM的力量,在没有互联网连接的情…...
在Jupyter 中 from XXX import * 报错
在Jupyter 中 导入模块会出现 from XXX import * 报错 但是 XXX.py 确实在同一个目录下,但是无法导入XXX中的XX方法 解决问题是 : 麻烦添加 import sys sys.path.append(./)通过执行 sys.path.append(‘./’) 这行代码,您将当前目录&am…...
小程序密码显示与隐藏的实现
默认密码隐藏起来(显示为点),后面的图标是闭眼;用户点击图标后,图标变成睁眼,同时把密码明文显示出来;如此循环 Page({data: {passwordType: true, // 切换是否密码框show_pass: false // 是否…...

“亚马逊云科技创业加速器”首期聚焦AI,促进入营企业业务发展
生成式AI技术飞速发展,颠覆着人们的生活,正在掀起新一轮的科技革命。在生成式AI的浪潮中,亚马逊云科技旨在为中国的优秀初创企业提供全方位支持,助其抢占先机。 在6月底举办的亚马逊云科技中国峰会上,亚马逊云科技联合…...

已解决“SyntaxError: invalid character in identifier“报错问题
本文摘要:本文已解决 Python FileNotFoundError 的相关报错问题,并总结提出了几种可用解决方案。同时结合人工智能GPT排除可能得隐患及错误。 😎 作者介绍:我是程序员洲洲,一个热爱写作的非著名程序员。CSDN全栈优质领…...
2023-09-02力扣每日一题
链接: 2511. 最多可以摧毁的敌人城堡数目 题意和解: 阅读理解题,要从1到-1或-1到1,中间只能有0,求最多能有多少0 实际代码: #include<bits/stdc.h> using namespace std; int captureForts(vect…...
服务war包部署SpringBootServletInitializer 的作用
在 Spring Boot 应用中,如果需要将应用打包成 WAR 包并部署到外部的 Servlet 容器中,就需要使用 SpringBootServletInitializer。 使用步骤: 必须创建war项目,需要创建好web项目的目录嵌入式Tomcat依赖scope指定provided编写Spr…...

[Linux]进程程序替换
[Linux]进程程序替换 文章目录 [Linux]进程程序替换进程程序替换的意义见一见进程程序替换进程程序替换的原理进程程序替换中的写时拷贝介绍进程程序替换接口 进程程序替换的意义 Linux系统下使用fork系统函数创建子进程后,子进程只能执行继承的部分父进程代码&…...

读余华小说《兄弟》
上部读完的一些笔记和思考,下部 TODO 时间:上世纪6、70年代 地点:刘镇 人物:故事中的兄弟指的是:宋钢(兄),李光头(弟),如下为简单的人物和命运图 一些故事:…...
机器学习课后习题 --回归
(一)单选题 1.以下()组变量之间存在线性回归关系? A:学生的性别与他的成绩 B:儿子的身高与父亲的身高 C:正方形的边长与面积D: 正三角形的边长与周长 2.回归问题和分类问题的区别是? A:回归问题有标签,分类问题…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...
模型参数、模型存储精度、参数与显存
模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...

HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...

PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

短视频矩阵系统文案创作功能开发实践,定制化开发
在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...