Java 数据结构与算法系列精讲之数组

网友投稿 260 2022-08-27


Java 数据结构与算法系列精讲之数组

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

概述

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

数组

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

声明数组的两个方法

方法一:

数据类型[] array;

方法二:

数据类型 array[];

创建数组的两个方法

方法一:

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

int[] array = new int[10];

方法二:

数据类型[] arrray = {value1, value2, ...}

int[] array = new int[10];

索引

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

自定义数组

泛型

示一种指定的数据类型, 叫做泛型. 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 {

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.ahttp://dd(0, -1);

array.add(6, 5);

System.out.println(array.toString());

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:python raise assert(python代码大全)
下一篇:django dispatch(django框架)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~