java基础之数组,int[]和ArrayList

开始学java的时候,对于 int[] 和ArrayList总是懵懵懂懂的,不知道啥时候用哪个。现在终于了解了,总结一下跟大家分享一下

int[]数组

  • 创建
    // 方式一:创建一个固定的数组
    int arr1 = {1,2,3,4,5};
    // 方式二:创建一个长度为10的数组
    double[] arr1 = new double[10];
    // 方式三:创建一个固定数组
    char[] arr = new char[] {1,2,3};
    
  • 特点

    1、长度在创建初期确定,且不可变动
    2、添加的内容只能为基本类型

ArrayList集合

  • 特点

    1、ArrayList是集合的一个实现类
    2、ArrayList内部封装了一个Object类型的对象,初始长度为10,且长度可变
    3、ArrayList集合的查询快,但是增删慢
    4、线程不安全

  • 创建
    // ArrayList可传各种类型数据
    ArrayList<T> arr = new ArrayList<>();
    

int[] 和ArrayList的对比(也可以是char[] 、double[]~~)

功能int[ ] arr=new int[5];ArrayList array=new ArrayList();
长度不可变可变,动态扩容
获取长度arr.lengtharray.size()
末尾添加-arr.add(element)
指定位置添加-array.add(index,element)
存入数据基本类型任意类型,一般结合泛型使用
返回某个位置的值arr[index]array.get(index)
更改某个位置的值arr[index]=element;array.set(index,element);
判空-array.isEmpty();返回的是boolean类型
是否包含某个元素-array.contains(element);返回的是boolean类型
移除指定位置元素-array.remove(index),返回的是被删除的值
迭代-Iterator ite = list.iterator(); //将List集合中元素转到iterator变量中。
ite.hasNext()
int[ ] 转ArrayList-Arrays.asList(int[]);
ArrayList转 int[ ]array.toArray();-

数组扩容(直接上图)

在这里插入图片描述

学会了扩容,那么我们用int[]来实现一个ArrayList

	public class ArrayList {int size; //有效数组长度,即将要插入的位置的下标int capacity; // 数组容量double factor; // 因数,即扩容的因数int[] arr;  //数组// 构造函数public ArrayList() {size = 0;capacity = 10;factor = 1.5;arr = new int[capacity];}// 添加public void add(int element) {// 先判断数组是不是满了(有效长度是不是超过了数组的长度)if(size>=arr.length) {capacity *=factor;int[] temp = new int[capacity];for(int i=0;i<arr.length;i++) {temp[i]=arr[i];}arr = temp;}// 添加数组后,size需要指向下一个位置,所以别忘了++arr[size]= element;size++;}// 插入public void insert(int element,int index) {// 先判断index的值是否合法if(index<0 || index>size) {System.out.println("位置"+index+"不可插入");}else {// 先判断数组是不是满了if(size>=arr.length) {capacity *=factor;int[] temp = new int[capacity];for(int i=0;i<arr.length;i++) {temp[i] = arr[i];}arr = temp;}// 没满的话,执行插入// 插入时未避免数据丢失,从后往前插入for(int i=size-1;i>=index;i--) {arr[i+1] = arr[i];}// 数据移完之后,对插入位置进行赋值arr[index] = element;size++;}}// 删除public void delete(int element) {int count = 0; // 从后往前遍历,这样可以确认不会漏删for(int i=size-1;i>=0;i--) {// 找到了要删除的值了if(arr[i]==element) {// 从这个位置开始遍历,把后一位的值移动到前一位for(int j=i+1;j<size;j++) { // 从i+1位置开始,将当前值赋值给前一个数arr[j-1] = arr[j];}// 删除后,有效长度要减少size--;// 记录查找此处count++;}}// flag=false说明没有找到if(count==0) {System.out.println("未找到"+element);}}// 修改public void update(int index,int element) {if(index<0 || index>size) {System.out.println("位置"+index+"不合法");}else {arr[index] = element;}}// 清空public void clear() {// arr指向新创建的长度为10的数组,同时将capacity = 10;arr = new int[capacity];size = 0;}// 重写toString方法@Overridepublic String toString() {String s = "[";// 针对清空列表的操作,列表清空后,size=0if(size==0) {return s+"]";}else {for(int i=0;i<size-1;i++) {s+=arr[i]+", ";}s+=arr[size-1];s+="]";return s;}}
}

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

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

相关文章

28_EfficientNetV2网络详解

V1&#xff1a;https://blog.csdn.net/qq_51605551/article/details/140487051?spm1001.2014.3001.5502 1.1 简介 EfficientNetV2是Google研究人员Mingxing Tan和Quoc V. Le等人在2021年提出的一种深度学习模型&#xff0c;它是EfficientNet系列的最新迭代&#xff0c;旨在提…

HLS加密技术:保障流媒体内容安全的利器

随着网络视频内容的爆炸性增长&#xff0c;如何有效保护视频内容的版权和安全成为了一个亟待解决的问题。HLS&#xff08;HTTP Live Streaming&#xff09;加密技术作为一种先进的流媒体加密手段&#xff0c;凭借其高效性和安全性&#xff0c;在直播、点播等场景中得到了广泛应…

十大排序 之 选择排序

&#xff01;&#xff01;&#xff01;排序仅针对于数组哦本次排序是按照升序来的哦 介绍 快速排序英文名为SelectSort从数组中找到最小的放到前边 基本思路 1、默认待排序数组中第一个作为最小值2、找待排序数组&#xff08;注意不是整个数组哦&#xff09;中真正的最小值3…

【机器学习实战】Datawhale夏令营2:深度学习回顾

#DataWhale夏令营 #ai夏令营 文章目录 1. 深度学习的定义1.1 深度学习&#xff06;图神经网络1.2 机器学习和深度学习的关系 2. 深度学习的训练流程2.1 数学基础2.1.1 梯度下降法基本原理数学表达步骤学习率 α梯度下降的变体 2.1.2 神经网络与矩阵网络结构表示前向传播激活函数…

《昇思25天学习打卡营第22天|生成式-Diffusion扩散模型》

Diffusion扩散模型 本文基于Hugging Face&#xff1a;The Annotated Diffusion Model一文翻译迁移而来&#xff0c;同时参考了由浅入深了解Diffusion Model一文。 本教程在Jupyter Notebook上成功运行。如您下载本文档为Python文件&#xff0c;执行Python文件时&#xff0c;请…

数据结构day2

一、思维导图 内存分配 二、课后习题 分文件编译 //sys.h #ifndef TEST_H #define TEST_H #define MAX_SIZE 100//定义学生类型 typedef struct Stu {char name[20]; //姓名int age; //年龄double score; //分数 }stu;//定义班级类型 typedef struct Class {struct …

Xilinx FPGA DDR4 接口配置基础(PG150)

1. 简介 本文为硬件平台创建PL IP模块&#xff0c;创建PL内核&#xff0c;子系统功能仿真&#xff0c;并评估Vivado的时序、资源和功耗收敛。 本文设计过程的主题包括&#xff1a; ClockingResetsProtocol DescriptionCustomizing and Generating the CoreExample Design D…

Linux学习(2):shell脚本和正则

概述 一般使用/bin/bash&#xff0c;也就是bash解析器。最广泛&#xff0c;大家公认。 一般shell脚本的后缀都是 .sh 简单写一个: 执行方法&#xff1a;sh sh文件 or bash sh文件&#xff0c;&#xff08;不用x权限&#xff09;直接运行./sh文件可能会有权限问题&#xff…

定制开发AI智能名片商城微信小程序在私域流量池构建中的应用与策略

摘要 在数字经济蓬勃发展的今天&#xff0c;私域流量已成为企业竞争的新战场。定制开发AI智能名片商城微信小程序&#xff0c;作为私域流量池构建的创新工具&#xff0c;正以其独特的优势助力企业实现用户资源的深度挖掘与高效转化。本文深入探讨了定制开发AI智能名片商城微信…

《昇思25天学习打卡营第20天|GAN图像生成》

生成对抗网络&#xff08;GAN&#xff09;是一种深度学习模型&#xff0c;用于生成逼真的图像。在手写数字识别的任务中&#xff0c;GAN 可以用来生成与真实手写数字相似的图像&#xff0c;以增强模型的训练数据集。GAN 主要由两个部分组成&#xff1a;生成器&#xff08;Gener…

UDP客户端、服务端及简易聊天室实现 —— Java

UDP 协议&#xff08;用户数据包协议&#xff09; UDP 是无连接通信协议&#xff0c;即在数据传输时&#xff0c;数据的发送端和接收端不建立逻辑连接&#xff0c;简单来说&#xff0c;当客户端向接收端发送数据时&#xff0c;客户端不会确认接收端是否存在&#xff0c;就会发出…

FATE Flow 源码解析 - 日志输出机制

背景介绍 在 之前的文章 中介绍了 FATE 的作业处理流程&#xff0c;在实际的使用过程中&#xff0c;为了查找执行中的异常&#xff0c;需要借助运行生成的日志&#xff0c;但是 FATE-Flow 包含的流程比较复杂&#xff0c;对应的日志也很多&#xff0c;而且分散在不同的文件中&…

Go语言中的并发

简单介绍go中的并发编程. 涉及内容主要为goroutine, goroutine间的通信(主要是channel), 并发控制(等待、退出). 想查看更多与Go相关的内容, 可以查看我的Go编程栏目 Goroutine 语法 在一个函数调用前加上go即可, go func(). 语法很简单, 可以说是并发写起来最简单的程序语言…

【简单介绍Gitea】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

广联达Linkworks ArchiveWebService XML实体注入漏洞复现

0x01 产品简介 广联达 LinkWorks(也称为 GlinkLink 或 GTP-LinkWorks)是广联达公司(Glodon)开发的一种BIM(建筑信息模型)协同平台。广联达是中国领先的数字建造技术提供商之一,专注于为建筑、工程和建筑设计行业提供数字化解决方案。 0x02 漏洞概述 广联达 LinkWorks…

【C#】已知有三个坐标点:P0、P1、P2,当满足P3和P4连成的一条直线 与 P0和P1连成一条直线平行且长度一致,该如何计算P3、P4?

问题描述 已知有三个坐标点&#xff1a;P0、P1、P2&#xff0c;当满足P3和P4连成的一条直线 与 P0和P1连成一条直线平行且长度一致&#xff0c;该如何计算P3、P4&#xff1f; 解决办法 思路一&#xff1a;斜率及点斜式方程 # 示例坐标 x0, y0 1, 1 # P0坐标 x1, y1 4, 4 # …

leetcode力扣_二分查找

69.x的平方根 给你一个非负整数 x &#xff0c;计算并返回 x 的 算术平方根 。由于返回类型是整数&#xff0c;结果只保留 整数部分 &#xff0c;小数部分将被 舍去 。注意&#xff1a;不允许使用任何内置指数函数和算符&#xff0c;例如 pow(x, 0.5) 或者 x ** 0.5 。 示例 1&…

数据结构——线性表(循环链表)

一、循环链表定义 将单链表中终端结点的指针端由空指针改为指向头结点&#xff0c;就使整个单链表形成一 个环&#xff0c;这种头尾相接的单链表称为单循环链表&#xff0c;简称循环链表(circular linked list)。 循环链表解决了一个很麻烦的问题。如何从当中一 个结点出发&am…

C# 智慧大棚nmodbus4

窗体 &#xff1a;图表&#xff08;chart&#xff09;&#xff1a; 下载第三方&#xff1a; nmodbus4:可以实现串口直连&#xff0c;需要创建串口对象设置串口参数配置Serialport 如果需要把串口数据表通过tcp进行网口传递 需要创建tcpclient对象 ModbusSerialMaster master; /…

爬虫(二)——爬虫的伪装

前言 本文是爬虫系列的第二篇文章&#xff0c;主要讲解关于爬虫的简单伪装&#xff0c;以及如何爬取B站的视频。建议先看完上一篇文章&#xff0c;再来看这一篇文章。要注意的是&#xff0c;本文介绍的方法只能爬取免费视频&#xff0c;会员视频是无法爬取的哦。 爬虫的伪装 …