java中Array(数组)、List(列表)、Set(集合)、Map(映射)、Queue(队列)详解

1. 数组(Array)

概念

数组是存储固定大小相同类型元素的集合。数组在Java中是静态的,长度一旦确定就不能改变。

特点
  • 固定大小:数组长度固定,不能动态改变。
  • 索引访问:通过索引(从0开始)快速访问元素。
  • 类型一致:数组中的所有元素必须是相同类型。
示例
int[] numbers = new int[5]; // 声明一个包含5个整数的数组
numbers[0] = 1; // 向数组中赋值
System.out.println(numbers[0]); // 输出数组的第一个元素
优缺点
  • 优点:访问和修改速度快,适合固定大小的数据集。
  • 缺点:大小不可变,不适合需要动态添加或删除元素的场景。

2. 列表(List)

概念

列表是一个有序的集合,允许重复元素,并且可以动态调整大小。列表是Java集合框架的一部分,最常用的实现是ArrayListLinkedList

特点
  • 动态大小:可以根据需要自动扩展或缩减。
  • 有序:元素按照插入顺序排列。
  • 类型一致:列表中的所有元素通常是同一类型,但可以通过泛型支持不同类型(如List<Object>)。
示例
import java.util.ArrayList;
import java.util.List;List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
System.out.println(list.get(0)); // 输出 "Apple"
ArrayList vs LinkedList
  • ArrayList:底层基于数组,访问速度快,但插入和删除元素速度相对慢(需要移动元素)。
  • LinkedList:底层基于双向链表,插入和删除速度快,但访问速度相对慢(需要遍历链表)。
优缺点
  • 优点:动态调整大小,适合需要频繁添加、删除操作的数据集。
  • 缺点:访问速度比数组慢(尤其是LinkedList)。

3. 集合(Set)

概念

集合是一个不允许重复元素的无序集合。常用的实现有HashSetTreeSet

特点
  • 无序:元素没有特定顺序(TreeSet是按自然顺序排序)。
  • 唯一性:不允许重复元素。
示例
import java.util.HashSet;
import java.util.Set;Set<String> set = new HashSet<>();
set.add("Apple");
set.add("Banana");
set.add("Apple"); // 尝试添加重复元素
System.out.println(set.size()); // 输出 2,因为集合不允许重复
HashSet vs TreeSet
  • HashSet:基于哈希表,操作速度快,但元素无序。
  • TreeSet:基于红黑树,元素有序,但操作速度相对慢。
优缺点
  • 优点:保证元素唯一,适合需要快速查找和去重的数据集。
  • 缺点:不保留插入顺序,TreeSet操作性能较HashSet低。

4. 映射(Map)

概念

映射是一个键值对的集合,每个键唯一映射到一个值。常用的实现有HashMapTreeMap

特点
  • 键唯一:每个键只能对应一个值。
  • 键值对:存储的是键值对,可以通过键快速访问对应的值。
示例
import java.util.HashMap;
import java.util.Map;Map<String, Integer> map = new HashMap<>();
map.put("Apple", 1);
map.put("Banana", 2);
System.out.println(map.get("Apple")); // 输出 1
HashMap vs TreeMap
  • HashMap:基于哈希表,键值对无序,但操作速度快。
  • TreeMap:基于红黑树,键值对按键的自然顺序排序,但操作速度相对慢。
优缺点
  • 优点:可以快速访问、插入、删除键值对,适合映射关系的数据集。
  • 缺点TreeMap性能较低,HashMap不保留顺序。

5. 队列(Queue)

概念

队列是一种按顺序处理元素的集合,支持FIFO(先进先出)原则。常用的实现有LinkedListPriorityQueue

特点
  • FIFO:先进先出,最早加入的元素最先处理。
  • 优先级队列PriorityQueue按优先级处理元素(最高优先级最先处理)。
示例
import java.util.LinkedList;
import java.util.Queue;Queue<String> queue = new LinkedList<>();
queue.add("Apple");
queue.add("Banana");
System.out.println(queue.poll()); // 输出 "Apple"
优缺点
  • 优点:适合需要顺序处理元素的场景。
  • 缺点:不支持随机访问,只能按顺序操作。

总结

数据结构特点适用场景
数组(Array)固定大小,索引访问,类型一致固定大小数据集,快速访问
列表(List)动态大小,有序,允许重复需要频繁添加、删除元素的数据集
集合(Set)无序,不允许重复元素快速查找,去重
映射(Map)键值对,键唯一映射关系的数据集,快速访问键对应的值
队列(Queue)FIFO顺序处理元素按顺序处理元素的场景

掌握这些基本数据结构及其应用场景,能够帮助你更有效地处理和管理数据,从而编写更高效的Java程序。

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

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

相关文章

卡尔曼滤波源码注释和调用示例

卡尔曼滤波源码注释和调用示例 flyfish Python版本代码地址 C版代码地址 主要用于分析代码&#xff0c;增加了中文注释 import numpy as np import scipy.linalg""" 0.95分位数的卡方分布表&#xff0c;N自由度&#xff08;包含N1到9的值&#xff09;。 取自…

【JS重点15】原型对象概述

目录 一&#xff1a;构造函数缺陷 二&#xff1a;原型 1 原型是是什么 2 原型对象的作用 3 原型对象this指向问题 4 利用原型对象添加方法 给JS内置构造函数Array添加最大值方法 给JS内置构造函数Array添加求和方法 三&#xff1a;Constructor属性 四&#xff1a;如何…

情绪管理:大我则定,小我则乱(王阳明)

学了很多知识&#xff0c;却还是感物易动&#xff1f;如何让心回归中正&#xff1f;王阳明一言以蔽之&#xff1a; —— 大我&#xff0c;大我则定&#xff0c;小我则乱 保持心静的方法&#xff1a;有大爱&#xff0c;为大局着想

全球“抱团”美股,美股“抱团”AI

内容提要 过去一个月内&#xff0c;全球约有300亿美元新资金流入股票基金&#xff0c;其中高达94%投向了美国资产&#xff1b;一季度&#xff0c;海外投资者购入了1870亿美元美国公司债券&#xff0c;同比增长61%。 文章正文 尽管美国面临债务问题和大选带来的政治分歧&#…

面试计算机网络八股文十问十答第九期

面试计算机网络八股文十问十答第九期 作者&#xff1a;程序员小白条&#xff0c;个人博客 相信看了本文后&#xff0c;对你的面试是有一定帮助的&#xff01;关注专栏后就能收到持续更新&#xff01; ⭐点赞⭐收藏⭐不迷路&#xff01;⭐ 1&#xff09;SYN 超时了怎么处理&am…

单链表——AcWing.826单链表

单链表 定义 单链表是一种常见的数据结构&#xff0c;它由一系列节点组成&#xff0c;每个节点包含一个数据元素和一个指向下一个节点的指针。 运用情况 用于实现动态的数据存储和管理&#xff0c;例如实现栈、队列等其他数据结构。在需要频繁进行插入和删除操作时非常有用…

pdf文件怎么改变大小?在线快速压缩pdf的方法

pdf作为一种常用的文件格式&#xff0c;使用这种文件类型的好处在于不仅拥有更好的兼容性&#xff0c;还可以设置密码来保证安全性&#xff0c;防止未授权用户查看内容&#xff0c;所以现在导出文件展示都会采用这种格式的来做内容展示。当遇到pdf文件过大问题时&#xff0c;想…

Python虚拟环境的配置

前言&#xff1a; 本人一度被Python的虚拟环境的配置所困扰&#xff0c;前段时间抽空学习了一下&#xff0c;现在总结一下方法&#xff0c;供大家参考。 先使用winr打开命令行窗口。 展示所有虚拟环境 conda env list 创建虚拟环境 例如我们创建一个叫做py_sk的虚拟环境 …

MSPM0L1306快速创建可移动工程(一)

设置成文本文件 宏定义 __MSPM0L1306__

大型企业IT基础架构和应用运维体系

大型企业IT基础架构和应用运维体系 在数字化转型的浪潮中&#xff0c;大型企业面临着日益复杂的IT环境。高效的IT基础架构和应用运维体系&#xff0c;是确保企业业务连续性和竞争力的关键。本文将探讨大型企业如何构建强健的IT基础架构&#xff0c;并建立高效的应用运维体系&a…

数据结构之B树

B树是一种自平衡的树数据结构&#xff0c;它在文件系统、数据库管理系统等应用中广泛使用&#xff0c;以高效管理和访问大量数据。以下是B树的详细介绍&#xff1a; ### B树的定义和特点 1. **节点的定义**&#xff1a; - B树的每个节点包含多个键值和指向子节点的指针。 …

Codeforces Global Round 26 A~E

A.Strange Splitting&#xff08;思维&#xff09; 题意&#xff1a; 将非空数组的范围定义为最大值减去最小值。例如&#xff0c; [ 1 , 4 , 2 ] [1,4,2] [1,4,2]的范围是 4 − 1 3 4-13 4−13。 给你一个长度为 n ≥ 3 n\geq 3 n≥3的数组 a 1 , a 2 , … , a n a_1,a_2,…

dhcp高可用

使用vrrp协议做双机冷备 VRRP组网下同网段内配置基于全局地址池的DHCP服务器示例 DHCP服务器备份&#xff08;冗余&#xff09;实验 centos7 keepalived 主备通信 防火墙vrrp 协议 缺点&#xff1a;主备的地址池范围不能重复&#xff0c;否则主备切换的时候可能从不同DHCP服务…

SpringBoot整合H2数据库并将其打包成jar包、转换成exe文件二(补充)

SpringBoot整合H2数据库并将其打包成jar包、转换成exe文件二&#xff08;补充&#xff09; 如果你想在cmd命令窗口内看到程序运行&#xff0c;即点开弹出运行窗口&#xff0c;关闭时exe自动关闭。 需要再launch4j上进行如下操作&#xff1a; 这样转换好的exe就可以有控制台了…

卡尔曼滤波原理及应用(一)

一.状态空间方程 系统的状态空间方程描述了系统的动态行为和状态演化过程。它由两个方程组成&#xff1a;状态方程和观测方程。系统的状态空间表达式简写为&#xff1a; 变量描述如下&#xff1a; x(t) 是系统的状态向量&#xff0c;表示系统在时间 &#x1d461;的状态。&…

【2024亲测无坑】Oracle--19C在Centos7上的静默安装(rpm版)

一、Oracle 19c Linux安装&#xff08;Centos 7&#xff09; 1.查看磁盘可用空间及配置ip地址 [rootlocalhost /]# df -h 文件系统 容量 已用 可用 已用% 挂载点 devtmpfs 1.4G 0 1.4G 0% /dev tmpfs 1.4G …

程序猿大战Python——函数——拆包和交换变量值与引用

拆包 目标&#xff1a;了解拆包的使用。 先来看看在现实生活中的拆包。比如&#xff0c;张同学背着背包来教室上课后&#xff0c;需要从背包中拿出电脑、鼠标、数据线、电源线等&#xff0c;这个过程就是拆包! 接着&#xff0c;看一下在Python程序中的拆包&#xff1a;把组合形…

阅读笔记:明朝那些事儿太监弄乱的王朝

阅读豆评高分作品《明朝那些事儿太监弄乱的王朝》第三部&#xff0c;截止到今天告一段落了&#xff0c;前两部皇帝&#xff0c;太子相对比较少&#xff0c;了解故事的主线&#xff0c;分支不算多&#xff0c;记忆起来还能应付过来&#xff0c;第三部皇帝&#xff0c;太子更换的…

c语言回顾-结构体

前言 在前面的学习中&#xff0c;我们知道C语言提供了许多内置类型&#xff0c;如&#xff1a;char、short、int、long、float、double等&#xff0c;但是只有这些内置类型还是不够的。当我们想描述学生&#xff0c;描述一本书&#xff0c;这时单一的内置类型是不行的。描述一个…

R语言数据分析案例29-基于ARIMA模型的武汉市房价趋势与预测研究

一、选题背景 房地产行业对于国民经济和社会及居民的发展和生活具有很大的影响&#xff0c;而房价能够体现经济运转的好坏&#xff0c;因而房价的波动牵动着开发商和购房者的关注&#xff0c;城市房价预测是一个研究的热点问题&#xff0c;研究房价对民生问题具有重要意义。 …