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

数据结构(java)——数组的构建和插入

数组:地址连续,可以直接通过下标获取数组中的内容。(下标从0开始)

新建的数组都有默认值

//创建数组//Java是强类型 数组必须声明类型//以下是三种创建数组的方式 int[] arr= {2,23,55,12,34,53};int[] brr=new int[5];int[] crr=new int[] {20,70,34};		

(注意:arr不是基础类型,不能被直接打印)

    //自己写的打印方法System.out.print("[");for(int i=0;i<arr.length;i++) {if(i==arr.length-1) {System.out.print(arr[i]);}else {System.out.print(arr[i]+",");}}System.out.print("]");//java自己封装的打印数组的方法System.out.println(Arrays.toString(arr));

当然也可以自己封装打印的方法

//自己封装方法show(arr);public static void show(int arr[]) {System.out.print("[");for(int i=0;i<arr.length;i++) {if(i==arr.length-1) {System.out.print(arr[i]);}else {System.out.print(arr[i]+",");}}System.out.print("]");}

数组长度不可变,但Java实现了可变数组。ArrayList类实现

原理:数组长度不够时,扩容原理:新建一个比原数组长度长的新数组 (大小约为原数组的1.5倍),遍历原来数组存入新数组(在Java中旧数组的内存会被自动回收)

int[] brr=new int[arr.length+1];for(int j=0;j<arr.length;j++) {brr[j]=arr[i]}arr=brr;arr[3]=50;

数组插入(尾插)设一个size游标,记录数组长度

插入之前要先判断数组当中是否有位置。即判断size是否和数组的长度相等,相等则满,需要扩容

 

 我们将以上几个知识点穿起来,写一个数组的插入打印

package 数据结构;import com.sun.jdi.connect.spi.TransportService.Capabilities;public class ArrayList {int size=0;//记录当前数组的个数int capacity=10;//记录数组容量double factor=1.5;//因数 1.5int[] arr=new int[capacity];//插入public void add(int element) {if(size==capacity) {capacity=(int) (capacity*factor);int[] brr=new int[capacity];for(int i=0;i<arr.length;i++) {brr[i]=arr[i];}arr=brr;}arr[size]=element;size++;}public String toString() {String res="[";for(int i=0;i<size;i++) {if(i==size-1) {res+=arr[i];}else {res+=arr[i]+", ";}}res+="]";return res;}}

在test类中调用这个方法。

package 数据结构;import java.util.Arrays;public class test {public static void main(String[] args) {ArrayList list=new ArrayList();list.add(18);list.add(29);list.add(34);list.add(43);list.add(54);list.add(11);list.add(23);list.add(21);list.add(74);list.add(95);list.add(122);list.add(218);list.add(33);System.out.println(list);}
}

 得到


http://www.mrgr.cn/news/59033.html

相关文章:

  • Python自动化发票处理:使用Pytesseract和Pandas从图像中提取信息并保存到Excel
  • 第九章 Mybatis多表操作之多对多配置
  • Flutter不常用组件----InteractiveViewer
  • 数据结构------手撕顺序表
  • 基于ssm框架的博客系统【附源码】
  • 金融工程--pine-script 入门
  • 【网络安全】一文讲清Zero Trust(零信任)安全
  • 【Python爬虫+数据分析】详细教学知网文献基本信息爬取方式(附详细教程+完整代码)
  • ctfshow的sql注入解题思路171-211
  • 文言编程:古老文字与现代编程的融合
  • 禾川SV-X2E A伺服驱动器参数设置——脉冲型
  • Gateway 统一网关
  • 【论文阅读】ESRGAN
  • C++ string类常用接口总结
  • 「C/C++」C++17 之 std::filesystem::directory_entry 文件系统目录条目
  • sql语句中的Group By 分组查询
  • AI神器,豆包自带抠图,完全免费!路人甲、去水印,轻轻一擦,全去掉
  • 今日所学1024和1026
  • gma 2.0.14 (2024.10.18) | GmaGIS V0.0.0a5 更新日志
  • DevOps 全面解析:实现开发与运维的无缝协作
  • 基于SSM美容院管理系统的设计
  • 【Linux操作系统】Linux配置OpenSSH服务器步骤记录
  • Vite+Vue3+qiankun构建微前端
  • C++数据结构-最小生成树:普利姆(Prim)算法及C/C++代码实现
  • css 对称按钮,中间斜平行间隔,两头半圆
  • H3CNE-10-H3C构建简单企业网络