Java基本数据结构(基于jdk11)

news2024/12/23 13:11:45

java中有很多数据类型,以下数据类型都出于java.util包下且日常经常使用的,先介绍一下接口,接口可以很快的了解到这个数据结构的特性。

接口

List: 有序队列,如:ArrayList、LinkedList

Deque:双端队列,如:LinkedList

Map: 键值对的集合,如:HashMap、TreeMap

Set:不包含重复元素的集合,如:HashSet

Queue:队列,如:PriorityQueue,LinkedList


ArrayList

可以从上图中发现ArrayList肯定实现了List接口的方法,ArrayList是一个可以动态扩容的数组。一开始初始容量是10,当数组中容量大于一半的时候就自动进行扩容至原数组的1.5倍。

ArrayList提供了几个构造方法:

public ArrayList();//默认构造一个容量为10的数组
public ArrayList(int initialCapacity);//该方法可以设置数组的初始容量
public ArrayList(Collection<? extends E> c);//可以传一个集合类型的对象

接下来分析其关键方法的时间复杂度。

add()

其添加单个元素是线性的O(1)的时间复杂度,n个元素的添加的时间复杂度就是O(n)。添加元素是直接添加进数组的末尾。

add有很多个重构的方法

ArrayList<Integer> list= new ArrayList<>();
list.add(5);
list.add(4);
list.add(3);
list.add(2);
list.add(1);//add(E e);
System.out.println(list);//[5, 4, 3, 2, 1]

list.add(0,6);//add(int index,E e);
System.out.println(list);//[6, 5, 4, 3, 2, 1]

ArrayList<Integer> list2= new ArrayList<>();
list2.addAll(list);//public boolean addAll(Collection<? extends E> c);
System.out.println(list);//[6, 5, 4, 3, 2, 1]

ArrayList<Integer> list3= new ArrayList<>();
list3.add(10);
list3.add(15);
System.out.println(list3);
list3.addAll(1,list);// public boolean addAll(int index, Collection<? extends E> c);
System.out.println(list);//[10, 6, 5, 4, 3, 2, 1, 15]

remove()

remove删除一个元素时要把删除元素后面的元素向前移所以其时间复杂度是O(n)

remove()也有很多重构的方法

System.out.println(list);//[5, 4, 3, 2, 1]
/**
* public E remove(int index);
* 根据数组下标进行删除
* index:数组下标
*/
list.remove(0);
System.out.println(list);//[4, 3, 2, 1]

/**
* public boolean remove(Object o);
* 根据对象进行删除
* o:对象
*/
list.remove(new Integer(1));
System.out.println(list);//[4, 3, 2]


/**
* public boolean removeIf(Predicate<? super E> filter);
* 根据条件进行删除
* filter:过滤器
*/
list.removeIf(i->(i%2==0));
System.out.println(list);//[3]

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

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

相关文章

Ruoyi-Cloud-Plus_使用Docker部署分布式微服务系统---SpringCloud工作笔记200

1.首先安装docker: 如果以前安装过首先执行: yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine 去卸载docker 2.安装dokcer需要的工具包…

HarmonyOS入门--ArkTS--基本语法

文章目录 ArkTSArkTS声明式开发范式的基本组成基本语法声明式UI创建组件配置属性配置事件配置子组件 自定义组件基本结构成员函数/变量build()函数自定义组件通用样式自定义组件的创建和渲染流程自定义组件重新渲染自定义组件的删除 Builder装饰器全局自定义构建函数组件内部的…

MySQL数据库 - 复杂查询(一)

一个不知名大学生&#xff0c;江湖人称菜狗 original author: Jacky Li Email : 3435673055qq.com Time of completion&#xff1a;2024.03.27 Last edited: 2024.03.27 目录 MySQL数据库 - 复杂查询&#xff08;一&#xff09; 第1关&#xff1a;交换工资 任务描述 相关知…

【论文阅读】Faster Neural Networks Straight from JPEG

Faster Neural Networks Straight from JPEG 论文链接&#xff1a;Faster Neural Networks Straight from JPEG (neurips.cc) 作者&#xff1a;Lionel Gueguen&#xff0c;Alex Sergeev&#xff0c;Ben Kadlec&#xff0c;Rosanne Liu&#xff0c;Jason Yosinski 机构&#…

什么是RISC-V?开源 ISA 如何重塑未来的处理器设计

RISC-V代表了处理器架构的范式转变&#xff0c;特点是其开源模型简化了设计理念并促进了全球community-driven的开发。RISC-V导致了处理器技术发展前进方式的重大转变&#xff0c;提供了一个不受传统复杂性阻碍的全新视角。 RISC-V起源于加州大学伯克利分校的学术起点&#xff…

降分违规?90%新手会遇到的抖音小店运营问题!解决方法快围观!

哈喽~我是电商月月 今天我们聊聊新手开抖音小店会遇到的问题以及解决方法 为了完整性我们从头到尾分析&#xff0c;根据情况不同可自行翻阅 一&#xff0c;入驻和运营时的操作问题 1.营业执照的办理&#xff0c;选择&#xff0c;填写 营业执照的办理可以去当地工商局办理&…

Redis、Mysql双写情况下,如何保证数据一致

Redis、Mysql双写情况下&#xff0c;如何保证数据一致 场景谈谈数据一致性三个经典的缓存模式Cache-Aside Pattern读流程写流程 Read-Through/Write-Through&#xff08;读写穿透&#xff09;Write behind &#xff08;异步缓存写入&#xff09; 操作缓存的时候&#xff0c;删除…

智慧公厕,为智慧城市建设注入了新的活力

随着智慧城市的快速发展&#xff0c;公共厕所不再是简单的功能设施&#xff0c;而是成为了提升城市形象、改善民生服务的重要一环。智慧公厕作为新形态的公共厕所&#xff0c;通过精准监测公厕内部的人体活动状态、人体存在状态、空气质量情况、环境变化情况、设施设备运行状态…

如何在CentOS使用Docker搭建MinIO容器并实现无公网ip远程访问本地服务

文章目录 前言1. Docker 部署MinIO2. 本地访问MinIO3. Linux安装Cpolar4. 配置MinIO公网地址5. 远程访问MinIO管理界面6. 固定MinIO公网地址 前言 MinIO是一个开源的对象存储服务器&#xff0c;可以在各种环境中运行&#xff0c;例如本地、Docker容器、Kubernetes集群等。它兼…

vue3 引入svg 图片的详细方法

我们都知道 svg 文件比图片小的多&#xff0c;可以节省很多空间&#xff0c;这对页面性能来说是个很大的提升。 下面介绍一下 vue3 项目中使用 svg 的详细方法&#xff1a; &#xff08;1&#xff09;安装依赖插件 npm install vite-plugin-svg-icons -D&#xff08;2&#x…

基于GIS、python机器学习技术的地质灾害风险评价与信息化建库

入门篇&#xff0c;ArcGIS软件的快速入门与GIS数据源的获取与理解&#xff1b;方法篇&#xff0c;致灾因子提取方法、灾害危险性因子分析指标体系的建立方法和灾害危险性评价模型构建方法&#xff1b;拓展篇&#xff0c;GIS在灾害重建中的应用方法&#xff1b;高阶篇&#xff1…

数字化转型核心 数据治理神器Hadoop 生态介绍HDFS、Yarn以及HBase/Hive

大数据Hadoop 生态的三大部件的目录 往期热门专栏回顾前言1、HDFS2、Yarn3、Hive4、HBase4.1&#xff0e;特点4.2&#xff0e;存储 5、Spark及Spark Streaming关于作者 往期热门专栏回顾 专栏描述Java项目实战介绍Java组件安装、使用&#xff1b;手写框架等Aws服务器实战Aws L…

BioXcell InVivoPlus anti-mouse Ly6G及部分参考文献

BioXcell InVivoPlus anti-mouse Ly6G 1A8单克隆抗体与小鼠Ly6G反应。Ly6G分子量为21-25kDa&#xff0c;是GPI锚定的细胞表面蛋白Ly-6超家族的成员&#xff0c;在细胞信号传导和细胞粘附中发挥作用。Ly6G在发育过程中由骨髓谱系中的细胞&#xff08;包括单核细胞、巨噬细胞、粒…

Edge浏览器控制台(F12)中网络不显示接口信息

&#x1f413;情况描述 点击页面接口&#xff0c;控制台中网络选项中无法显示其接口信息 &#x1f413;问题解决 1.查看接口是否开启筛选&#xff0c;如果开启更改为全部即可 2.如果非上述情况&#xff0c;则可能是浏览器配置的问题&#xff0c;将浏览器配置可能有所变动 将浏…

【CASS精品教程】CASS添加标准图幅(50×50cm+50×40cm)

大比例尺地形图图幅一般分为正方形和矩形分幅两种,本文讲解CASS中添加标准图幅(5050cm、5040cm)的方法。 文章目录 一、CASS参数配置二、添加标准图幅(5050cm)三、添加标准图幅(5040cm)打开基于CASS自带案例数据study.dat绘制好的地形图study.dwg,如下图所示,下面来演示两种…

需求生命周期管理

背景 回顾很多项目或者产品&#xff0c;我们发现现在的版本和当初的理解或者设想是天壤之别&#xff0c;这是什么原因&#xff0c;对于这种情况又应该如何处理呢&#xff1f; 业务分析的交付物是需求文档&#xff0c;业务分析整个过程随着对业务的逐步深入&#xff0c;观察视…

基于Java在线考试系统系统设计与实现(源码+部署文档)

博主介绍&#xff1a; ✌至今服务客户已经1000、专注于Java技术领域、项目定制、技术答疑、开发工具、毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精彩专栏 推荐订阅 &#x1f447;&#x1f3fb; 不然下次找不到 Java项目精品实…

推荐几个python的工具

Beautiful Soup Beautiful Soup用于清理和提取HTML和XLM中的数据。 它用于解析HTML文本&#xff0c;并允许数据科学家将文本数据转换为结构化数据&#xff0c;只需几行代码&#xff0c;就可以提取复杂的HTML数据。在某些情况下&#xff0c;您只需要一个表标签&#xff0c;并且…

后端前行Vue之路(一):初识Vue

1.Vue是什么 Vue (读音 /vjuː/&#xff0c;类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是&#xff0c;Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层&#xff0c;不仅易于上手&#xff0c;还便于与第三方库或既有项目整合。另一方…

C++资产设备管理系统

一、引言 1.1 项目设计背景及意义 1.1.1理论研究基础 &#xff08;1&#xff09;C在C的基础上增加了面向对象的机制。 &#xff08;2&#xff09;充分利用面向对象机制中的多态性实现函数的设计。 1.1.2 技术层面的支持 运用系统为C面向对象程序设计提供的各种设计方法和V…