【Java 数据结构 & 算法】⚠️宁可累死自己, 也要卷死别人 3⚠️ 数组

  • 概述
  • 数组
    • 声明数组的两个方法
    • 创建数组的两个方法
  • 索引
  • 自定义数组
    • 泛型
    • 构造函数
    • 元素操作
    • 调用
    • 完整代码

概述

从今天开始, 小白我将带大家开启 Jave 数据结构 & 算法的新篇章.

数组

数组 (Array) 是有序数据的集合, 在 Java 中 java.util.Arrays包含用来操作数组的各种方法, 比如排序和搜索等. 其所有方法均为静态方法, 调用起来非常简单.

声明数组的两个方法

方法一:

数据类型[] array;

方法二:

数据类型 array[];

创建数组的两个方法

方法一:

数据类型[] array = new 数据类型[n];
int[] array = new int[10];

方法二:

数据类型[] arrray = {value1, value2, ...}
int[] array = {1, 2, 3, 4};

索引

索引 (Index) 可以帮助我们定位到想要的数据, 大幅提高数据的检索速度.

自定义数组

泛型

<E>示一种指定的数据类型, 叫做泛型. E, 取自 Element (元素) 的首字母. 在出现 E 的地方, 我们使用一种引用数据类型将其替换即可, 表示我们将存储哪种引用类型的元素.

构造函数

// 有参构造
public Array(int capacity){data =  (E[]) new Object[capacity];size = 0;
}// 无参构造
public Array(){this(10);
}

元素操作

// 头部添加元素
public void addFirst(E element){// 如果超过数组最大容量, 扔出异常if(size == data.length){throw new RuntimeException("array is full!");}// 列表所有index及元素后移for (int i = size - 1; i >= 0; i--) {data[i + 1] = data[i];}// 数组第size个赋值为elementdata[0] = element;// 数组大小+1size++
}// 尾部添加元素
public void addLast(E element){// 如果超过数组最大容量, 扔出异常if(size == data.length){throw new RuntimeException("array is full!");}// 数组第size个赋值为elementdata[size] = element;// 数组大小+1size++;
}// 通过索引添加元素
public void add(int index, E element){// 如果超过数组最大容量, 扔出异常if(size == data.length){throw new RuntimeException("reached max capacity");}if(index < 0 || index > size){throw new RuntimeException("invalid index");}// 列表所有index及以后的元素后移for (int i = size-1; i >=index; i--) {data[i + 1] = data[i];}data[index] = element;size++;
}

调用

public static void main(String[] args) {// 创建数组Array array = new Array(10);// 尾部添加array.addLast(2);array.addLast(3);array.addLast(4);System.out.println(array.toString());// 头部添加array.addFirst(1);array.addFirst(0);System.out.println(array.toString());// 通过index添加元素array.add(0, -1);array.add(6, 5);System.out.println(array.toString());
}

输出结果:

Array{data=[2, 3, 4, null, null, null, null, null, null, null]}
Array{data=[0, 1, 2, 3, 4, null, null, null, null, null]}
Array{data=[-1, 0, 1, 2, 3, 4, 5, null, null, null]}

完整代码

import java.util.Arrays;public class Array<E> {private E[] data;  // 存放数据private int size;  // 存放数组元素个数// 有参构造public Array(int capacity){data = (E[]) new Object[capacity];size = 0;}// 无参构造public Array(){this(10);}// 获取数组容量public int getCapacity(){return data.length;}// 获取数组元素个数public int getSize(){return size;}// 判断数组是否为空public boolean isEmpty(){return size == 0;}// 头部添加元素public void addFirst(E element){// 如果超过数组最大容量, 扔出异常if(size == data.length){throw new RuntimeException("array is full!");}// 列表所有index及元素后移for (int i = size - 1; i >= 0; i--) {data[i + 1] = data[i];}// 数组第size个赋值为elementdata[0] = element;// 数组大小+1size++;}// 尾部添加元素public void addLast(E element){// 如果超过数组最大容量, 扔出异常if(size == data.length){throw new RuntimeException("array is full!");}// 数组第size个赋值为elementdata[size] = element;// 数组大小+1size++;}// 通过索引添加元素public void add(int index, E element){// 如果超过数组最大容量, 扔出异常if(size == data.length){throw new RuntimeException("reached max capacity");}if(index < 0 || index > size){throw new RuntimeException("invalid index");}// 列表所有index及以后的元素后移for (int i = size-1; i >=index; i--) {data[i + 1] = data[i];}data[index] = element;size++;}@Overridepublic String toString() {return "Array{" +"data=" + Arrays.toString(data) +'}';}public static void main(String[] args) {// 创建数组Array array = new Array(10);// 尾部添加array.addLast(2);array.addLast(3);array.addLast(4);System.out.println(array.toString());// 头部添加array.addFirst(1);array.addFirst(0);System.out.println(array.toString());// 通过index添加元素array.add(0, -1);array.add(6, 5);System.out.println(array.toString());}
}

【Java 数据结构 算法】宁可累死自己, 也要卷死别人 3 数组相关推荐

  1. 【Java 数据结构 算法】宁可累死自己, 也要卷死别人 18 贪心算法

    [Java 数据结构 & 算法]⚠️宁可累死自己, 也要卷死别人 18⚠️ 贪心算法 概述 贪心算法 电台覆盖问题 代码实现 概述 从今天开始, 小白我将带大家开启 Java 数据结构 &am ...

  2. 【Java 数据结构 算法】宁可累死自己, 也要卷死别人 12 红黑树

    [Java 数据结构 & 算法]⚠️宁可累死自己, 也要卷死别人 12⚠️ 红黑树 概述 红黑树 红黑树的实现 Node 类 添加元素 左旋 右旋 完整代码 概述 从今天开始, 小白我将带大家 ...

  3. 【Java 数据结构 算法】宁可累死自己, 也要卷死别人 6 循环队列

    [Java 数据结构 & 算法]⚠️宁可累死自己, 也要卷死别人 6⚠️ 循环队列 概述 循环队列 循环队列实现 改变队列大小 enqueue 方法 dequeue 方法 main 完整代码 ...

  4. 【Java 数据结构 算法】宁可累死自己, 也要卷死别人 8 环形链表

    [Java 数据结构 & 算法]⚠️宁可累死自己, 也要卷死别人 8⚠️ 环形链表 概述 链表 环形链表 环形链表实现 Node 类 insert 方法 remove 方法 main 完整代码 ...

  5. Java数据结构算法之八皇后问题

    八皇后问题是由国际象棋手马克斯-贝瑟于1848年提出的问题,是回溯算法的经典案例. 问题表述为:在8×8格的国际象棋上摆放8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行.同一列或同一斜线上 ...

  6. 不要累死自己,也不要卷死别人。

    最近从<哈佛商业周刊>里看到一篇关于应对企业内卷的文章,讲的是企业没有创新力,所以才会内卷.由此我想到个人内卷其实也是如此. 什么是内卷? 内卷指的是,在一个竞争激励的环境里,个体为了增加 ...

  7. Java数据结构的实现

    文章目录 一.Java数据结构 二.数据结构之数组和链表(Java语言描述) 1.Java数组 1.初始化数组 2.直接赋值 3.可变数组 2.链表 1.节点定义 2.实例化节点 三.数据结构之树和图 ...

  8. java游戏将相_(Java)算法——位运算基础及基本应用

    位运算基础及基本应用 在处理整形数值时,可以直接对组成整形数值的各个位进行操作.这意味着可以使用屏蔽技术获得整数中的各个位(??) 位运算是针对整数的二进制进行的位移操作 整数 32位 , 正数符号为 ...

  9. 头歌JAVA数据结构答案

    头歌JAVA数据结构答案 一.Java数据结构-循环链表的设计与实现 第1关 单循环链表的实现-链表的添加.遍历 package step1; /*** Created by sykus on 201 ...

最新文章

  1. Solarium简易使用
  2. python代码大全p-【python】10分钟教你用python一行代码搞点大新闻
  3. ajax 更新模型数据_PyTorch视觉工具包torchvision重大更新!支持各种检测模型、分割模型,还有许多数据集...
  4. 17、Power Query-户口信息统计
  5. point-position2修改版
  6. 初识c语言教程,第1课C语言教程一: 初识C程序.doc
  7. 刷爆抖音,4万好评!这本 Python 3.6 的书又断货了...
  8. sbt 地址修改备注
  9. 《Java就业培训教程》_张孝祥_书内源码_02
  10. 计算机四级 网络工程师 考过指南
  11. cc2430的中文资料
  12. android设备(手机) 投屏 到mac电脑
  13. excel合并多个工作表_多个Excel工作表合并到一个工作簿?很简单!
  14. 舍弗勒、斯凯孚、阿尔斯通、默沙东、联合利华、洲际、希尔顿、盖璞等外企在中国 | 美通社头条...
  15. 【Pandas 数据分析 2】数据结构
  16. logstash读取kafka所有topics 自动创建es 索引
  17. 尚医通(九)数据字典模块前后端 | EasyExcel
  18. 总结前端好用的ui框架,做开发非常的奈斯,总有一款你喜欢。
  19. 2018保研夏令营调研笔记
  20. python bind函数_python bind是什么意思

热门文章

  1. 清华大学计算机系鲍海云,清华设计自动化
  2. 中兴缘何被美国“放过”?而后又将迎来什么?
  3. 7-1 单词首字母大写
  4. 21岁小伙因撑伞羞耻被中度晒伤
  5. 耐住寂寞,守住繁华!
  6. 【电路】【人体感应】【人体红外传感器】【夜间监控】自动识别人并自动开启设备-可用于人像跟踪监控【第二部分-设备部分】【方案一】
  7. html5脸型捕捉,八种脸型所暗藏的运势
  8. MYSQL再学习1-Centos安装mysql5.7
  9. ABAQUS软件实训(八):线性静力学分析概述
  10. CFF刷题202006-1线性分类器