数组的增删改查
package com.company;
/**
* @program: Array
* @description: 数组
* @author: Gu
* @create: 2019-04-10 22:03
**/
public class Array {
private int[] data;
private int size;
//初始化
public Array(int capacity) {
data = new int[capacity];
size = 0;
}
//无参构造函数默认最大容量为10
public Array() {
this(10);
}
//数组长度
public int length() {
return data.length;
}
//数组元素个数
public int getSize() {
return size;
}
//数组是否为空
public boolean isEmpty() {
return size == 0;
}
//向数组指定位置中添加元素
public void add(int index, int element) {
if (index >= data.length || index < 0) {
throw new IllegalArgumentException("[数组索引非法]");
}
if (size >= data.length) {
throw new IndexOutOfBoundsException("[数组已达到最大容量]");
}
for (int i = size - 1; i >= index; i--) {
data[i + 1] = data[i];
}
data[index] = element;
size++;
}
//向数组第一个索引添加元素
public void addFirst(int element) {
add(0, element);
}
//数组末尾添加元素
public void addLast(int element) {
add(size, element);
}
//根据index查找指定元素
public int get(int index) {
if (index < 0 || index >= size) {
throw new IllegalArgumentException("[数组索引非法]");
}
return data[index];
}
//查找数组是否包含指定元素
public boolean contains(int element) {
for (int value : data) {
if (value == element) {
return true;
}
}
return false;
}
//返回指定元素的索引
public int find(int element) {
for (int i = 0; i < size; i++) {
if (data[i] == element) {
return i;
}
}
return -1;
}
//修改数组元素
public void set(int index, int element) {
if (index < 0 || index >= size) {
throw new IllegalArgumentException("[数组索引非法]");
}
data[index] = element;
}
//删除指定元素
public void delete(int element) {
int index = find(element);
if (index == -1) {
throw new IllegalArgumentException("[数组没有该元素]");
}
remove(index);
}
//根据索引删除元素
public int remove(int index) {
if (index < 0 || index >= size) {
throw new IllegalArgumentException("[数组索引非法]");
}
int res = data[index];
for (int i = index + 1; i < size; i++) {
data[i - 1] = data[i];
}
size = size - 1;
return res;
}
//删除第一个
public int removeFirst() {
return remove(0);
}
//删除最后一个
public int removeLast() {
return remove(size - 1);
}
//打印数组相关信息
@Override
public String toString() {
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append(String.format("数组的size : %d, 数组的capacity : %d \n", size, data.length));
stringBuffer.append("[");
for (int i = 0; i < size; i++) {
stringBuffer.append(data[i]);
if (i == size - 1) {
stringBuffer.append("]");
break;
}
stringBuffer.append(",");
}
return stringBuffer.toString();
}
}
测试类
public class Main {
public static void main(String[] args) {
Array arr = new Array(20);
for(int i = 0 ; i < 10 ; i ++)
arr.addLast(i);
System.out.println(arr);
arr.add(1, 100);
System.out.println(arr);
arr.addFirst(-1);
System.out.println(arr);
// [-1, 0, 100, 1, 2, 3, 4, 5, 6, 7, 8, 9]
arr.remove(2);
System.out.println(arr);
arr.removeElement(4);
System.out.println(arr);
arr.removeFirst();
System.out.println(arr);
}
}
网友评论