【Java 数据结构 & 算法】宁可累死自己, 也要卷死别人 3 数组
2021/12/9 11:19:04
本文主要是介绍【Java 数据结构 & 算法】宁可累死自己, 也要卷死别人 3 数组,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
【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个赋值为element data[0] = element; // 数组大小+1 size++ } // 尾部添加元素 public void addLast(E element){ // 如果超过数组最大容量, 扔出异常 if(size == data.length){ throw new RuntimeException("array is full!"); } // 数组第size个赋值为element data[size] = element; // 数组大小+1 size++; } // 通过索引添加元素 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个赋值为element data[0] = element; // 数组大小+1 size++; } // 尾部添加元素 public void addLast(E element){ // 如果超过数组最大容量, 扔出异常 if(size == data.length){ throw new RuntimeException("array is full!"); } // 数组第size个赋值为element data[size] = element; // 数组大小+1 size++; } // 通过索引添加元素 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++; } @Override public 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 数组的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-29设计Element UI表单组件居然如此简单!
- 2024-12-28一步到位:购买适合 SEO 的域名全攻略
- 2024-12-27OpenFeign服务间调用学习入门
- 2024-12-27OpenFeign服务间调用学习入门
- 2024-12-27OpenFeign学习入门:轻松掌握微服务通信
- 2024-12-27OpenFeign学习入门:轻松掌握微服务间的HTTP请求
- 2024-12-27JDK17新特性学习入门:简洁教程带你轻松上手
- 2024-12-27JMeter传递token学习入门教程
- 2024-12-27JMeter压测学习入门指南
- 2024-12-27JWT单点登录学习入门指南