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

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集合:

  1. 导入List类和实现类的包:import java.util.List;import java.util.ArrayList;
  2. 创建List对象:List<String> list = new ArrayList<>();
  3. 添加元素:list.add("元素1");
  4. 访问元素:String element = list.get(0);
  5. 遍历集合:使用for循环或者迭代器遍历集合。

Set

Set接口的常用实现类有HashSet和TreeSet。可以使用以下步骤使用Set集合:

  1. 导入Set类和实现类的包:import java.util.Set;import java.util.HashSet;
  2. 创建Set对象:Set<String> set = new HashSet<>();
  3. 添加元素:set.add("元素1");
  4. 判断元素是否存在:boolean contains = set.contains("元素1");
  5. 遍历集合:使用for-each循环遍历集合。

Map

Map接口的常用实现类有HashMap和TreeMap。可以使用以下步骤使用Map集合:

  1. 导入Map类和实现类的包:import java.util.Map;import java.util.HashMap;
  2. 创建Map对象:Map<String, Integer> map = new HashMap<>();
  3. 添加键值对:map.put("键1", 1);
  4. 获取值:int value = map.get("键1");
  5. 遍历集合:使用for-each循环遍历键或值。

队列

队列接口的常用实现类有LinkedList和PriorityQueue。可以使用以下步骤使用队列:

  1. 导入队列类和实现类的包:import java.util.Queue;import java.util.LinkedList;
  2. 创建队列对象:Queue<String> queue = new LinkedList<>();
  3. 添加元素:queue.add("元素1");
  4. 获取并删除队列头部的元素:String element = queue.poll();
  5. 遍历队列:使用迭代器遍历队列。

什么场景使用?

  • 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和队列的基本用法。根据具体需求选择合适的集合类型,以提高代码的效率和可读性。

对比

维度ListSetMap队列
实现类ArrayList、LinkedList、Vector等HashSet、LinkedHashSet、TreeSet等HashMap、LinkedHashMap、TreeMap等LinkedList、PriorityQueue等
元素有序的、可重复的无序的、不可重复的以键值对的形式存储、键不可重复、值可重复的数据结构先进先出的数据结构、支持插入、删除、查找等操作
存储按索引顺序存储无序存储以键值对的形式存储按插入顺序存储
访问可以通过索引值对列表进行访问和修改不能直接访问、可以通过迭代器进行访问可以通过键值对进行访问和修改可以通过队列头和队列尾进行访问和修改
性能读取速度快,添加和删除速度较慢添加和删除速度快,读取速度较慢读取速度快,添加和删除速度较慢添加和删除速度快,读取速度较慢
应用适用于需要按索引顺序访问的情况适用于需要去重的情况适用于需要以键值对形式存储数据的情况适用于先进先出的数据操作的情况

相关文章:

Java-集合框架-List,Set,Map,队列

文章目录 Java集合框架&#xff1a;List&#xff0c;Set&#xff0c;Map&#xff0c;队列Java集合框架是什么&#xff1f;如何使用&#xff1f;ListSetMap队列 什么场景使用&#xff1f;优缺点是什么&#xff1f;ListSetMap队列 Java示例List示例Set示例Map示例队列示例 对比 J…...

第一章_线程基础知识

先拜拜大神 Doug Lea&#xff08;道格.利&#xff09; java.util.concurrent在并发编程中使用的工具包 为什么学习并用好多线程极其重要 硬件方面 摩尔定律失效 摩尔定律&#xff1a;它是由英特尔创始人之一Gordon Moore&#xff08;戈登.摩尔&#xff09;提出来的。其内容为…...

linux(centos7)定时关机解决方案

使用场景与痛点&#xff1a; 根据实际需求&#xff0c;每个星期五都要关闭服务器若干&#xff0c;痛点如下&#xff1a; 1是服务器比较多&#xff0c;按起来麻烦。2是因为周五时间点特殊&#xff0c;着急下班容易忘记关闭服务器。那些要关注才能看的博客&#xff0c;不是我喷&a…...

reactnative笔记

1、React Native 搭建开发环境和创建新项目并运行的详细教程_react项目怎么运行_AaVictory.的博客-CSDN博客 环境搭建遇到报错靠下面两个解决的&#xff08;模拟器的adb和reactnative的adb版本不同&#xff0c;且都配置环境&#xff09; 2、 adb server version (41) doesn‘t…...

软件架构模式+系统架构

架构模式对比 分层模式 一般信息系统中最常见的4层划分如下&#xff1a; Presentation layer 表示层&#xff08;也就是UI层&#xff09;Application layer 应用层&#xff08;也就是服务层&#xff09;Business logic layer 业务逻辑层&#xff08;也就是领域层&#xff09;…...

SQL 语句学习总结:

1. 四范式&&范式好处&#xff1a; 数据库范式是数据表设计的规范&#xff0c;在范式规范下&#xff0c;数据库里每个表存储的重复数据降到最少&#xff08;这有助于数据的一致性维护&#xff09;&#xff0c;同时在数据库范式下&#xff0c;表和表之间不再有很强的数据…...

【Linux】简单的小程序:进度条

在学习进度条之前&#xff0c;需要学一点预备知识。 1. 预备知识 回车换行 现在的换行符&#xff08;\n&#xff09;其实就是回车式换行符&#xff0c;另起一行&#xff0c;光标指向最新一行的开头。回车符&#xff08;\r&#xff09;是光标指向这一行的开头。 缓冲区 &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. **选择适当的数据存储技术&#xff1a;**2. **采用分布式架构&#xff1a;**3. **数据分区和索引&#xff1a;**4. **采用列式存储&#xff1a;**5. **数据压缩和编码&#xff1a;**6. **使用缓存技术&#xff1a;**7. **数据分片和复制&#xff1a;**8. **自动化运…...

第六章,线性变换,1-线性变换、表示矩阵、线性算子

第六章&#xff0c;线性变换&#xff0c;1-线性变换、表示矩阵、线性算子 线性变换表示矩阵 线性算子 R 2 R^2 R2中特殊的线性变换旋转变换算子反射变换算子投影变换算子伸压变换算子剪切变换算子 玩转线性代数(32)线性变换的相关概念的笔记&#xff0c;相关证明以及例子见原文…...

15个关于AI的Github库

这里是我们精选的创新项目列表&#xff08;排名不分先后&#xff09;&#xff0c;这些项目正在机器学习和人工智能领域蓬勃发展 1&#xff1a;privateGPT 作者&#xff1a;imartinezGithub 星数&#xff1a;16.7K描述&#xff1a;利用LLM的力量&#xff0c;在没有互联网连接的情…...

在Jupyter 中 from XXX import * 报错

在Jupyter 中 导入模块会出现 from XXX import * 报错 但是 XXX.py 确实在同一个目录下&#xff0c;但是无法导入XXX中的XX方法 解决问题是 &#xff1a; 麻烦添加 import sys sys.path.append(./)通过执行 sys.path.append(‘./’) 这行代码&#xff0c;您将当前目录&am…...

小程序密码显示与隐藏的实现

默认密码隐藏起来&#xff08;显示为点&#xff09;&#xff0c;后面的图标是闭眼&#xff1b;用户点击图标后&#xff0c;图标变成睁眼&#xff0c;同时把密码明文显示出来&#xff1b;如此循环 Page({data: {passwordType: true, // 切换是否密码框show_pass: false // 是否…...

“亚马逊云科技创业加速器”首期聚焦AI,促进入营企业业务发展

生成式AI技术飞速发展&#xff0c;颠覆着人们的生活&#xff0c;正在掀起新一轮的科技革命。在生成式AI的浪潮中&#xff0c;亚马逊云科技旨在为中国的优秀初创企业提供全方位支持&#xff0c;助其抢占先机。 在6月底举办的亚马逊云科技中国峰会上&#xff0c;亚马逊云科技联合…...

已解决“SyntaxError: invalid character in identifier“报错问题

本文摘要&#xff1a;本文已解决 Python FileNotFoundError 的相关报错问题&#xff0c;并总结提出了几种可用解决方案。同时结合人工智能GPT排除可能得隐患及错误。 &#x1f60e; 作者介绍&#xff1a;我是程序员洲洲&#xff0c;一个热爱写作的非著名程序员。CSDN全栈优质领…...

2023-09-02力扣每日一题

链接&#xff1a; 2511. 最多可以摧毁的敌人城堡数目 题意和解&#xff1a; 阅读理解题&#xff0c;要从1到-1或-1到1&#xff0c;中间只能有0&#xff0c;求最多能有多少0 实际代码&#xff1a; #include<bits/stdc.h> using namespace std; int captureForts(vect…...

服务war包部署SpringBootServletInitializer 的作用

在 Spring Boot 应用中&#xff0c;如果需要将应用打包成 WAR 包并部署到外部的 Servlet 容器中&#xff0c;就需要使用 SpringBootServletInitializer。 使用步骤&#xff1a; 必须创建war项目&#xff0c;需要创建好web项目的目录嵌入式Tomcat依赖scope指定provided编写Spr…...

[Linux]进程程序替换

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

读余华小说《兄弟》

上部读完的一些笔记和思考&#xff0c;下部 TODO 时间&#xff1a;上世纪6、70年代 地点&#xff1a;刘镇 人物&#xff1a;故事中的兄弟指的是&#xff1a;宋钢(兄)&#xff0c;李光头&#xff08;弟&#xff09;&#xff0c;如下为简单的人物和命运图 一些故事&#xff1a;…...

机器学习课后习题 --回归

&#xff08;一&#xff09;单选题 1.以下()组变量之间存在线性回归关系&#xff1f; A:学生的性别与他的成绩 B:儿子的身高与父亲的身高 C:正方形的边长与面积D: 正三角形的边长与周长 2.回归问题和分类问题的区别是&#xff1f; A:回归问题有标签&#xff0c;分类问题…...

OpenLayers 可视化之热力图

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

visual studio 2022更改主题为深色

visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中&#xff0c;选择 环境 -> 常规 &#xff0c;将其中的颜色主题改成深色 点击确定&#xff0c;更改完成...

最新SpringBoot+SpringCloud+Nacos微服务框架分享

文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的&#xff0c;根据Excel列的需求预估的工时直接打骨折&#xff0c;不要问我为什么&#xff0c;主要…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域&#xff0c;准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具&#xff0c;正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时&#xff0c;你可能需要保留重要的数据&#xff0c;例如通讯录。好在&#xff0c;将通讯录从 iPhone 转移到 Android 手机非常简单&#xff0c;你可以从本文中学习 6 种可靠的方法&#xff0c;确保随时保持连接&#xff0c;不错过任何信息。 第 1…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

scikit-learn机器学习

# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...

通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器

拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件&#xff1a; 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...

LangFlow技术架构分析

&#x1f527; LangFlow 的可视化技术栈 前端节点编辑器 底层框架&#xff1a;基于 &#xff08;一个现代化的 React 节点绘图库&#xff09; 功能&#xff1a; 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...

深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏

一、引言 在深度学习中&#xff0c;我们训练出的神经网络往往非常庞大&#xff08;比如像 ResNet、YOLOv8、Vision Transformer&#xff09;&#xff0c;虽然精度很高&#xff0c;但“太重”了&#xff0c;运行起来很慢&#xff0c;占用内存大&#xff0c;不适合部署到手机、摄…...