数组简单源码实现,做一个笔记。
package arrays.init;
/**
* 数组初始化
*/
public class MyArrays {
/**
* 定义一个数组
*/
private int[] intArrays;
/**
* 定义数组的实际长度
*/
private int elems;
/**
* 定义数组的最大长度
*/
private int length;
public MyArrays() {
elems = 0;
length = 10;
intArrays = new int[length];
}
public MyArrays(int length) {
elems = 0;
this.length = length;
intArrays = new int[length];
}
/**
* 获取数组大小
*/
public int getSize() {
return elems;
}
/**
* 遍历数组
*/
public void display() {
for (int i = 0; i < elems; i++) {
System.out.print(intArrays[i] + ",");
}
System.out.println();
}
/**
* 添加元素
*/
public boolean add(int value) {
if (length < elems) {
throw new IndexOutOfBoundsException("数组越界");
} else {
intArrays[elems] = value;
elems++;
}
return true;
}
/**
* 查找元素 根据元素值
*/
public int find(int value) {
int i = 0;
for (i = 0; i < elems; i++) {
if (intArrays[i] == value) {
break;
}
}
// not find
if (i == elems) {
return -1;
}
return i;
}
/**
* 查找元素 根据下标
*/
public int get(int i) {
if (i < 0 || i >= elems) {
throw new IndexOutOfBoundsException("数组越界");
}
return intArrays[i];
}
/**
* 删除元素
*/
public boolean delete(int value) {
int k = find(value);
// not find
if (k == -1) {
System.out.println("元素:" + value + "不存在");
return false;
} else {
if (k == elems - 1) { // 最后一个元素
elems--;
} else { // k 后面的元素向前移动
for (int i = k; i < elems - 1; i++) {
intArrays[i] = intArrays[i + 1];
}
elems--;
}
}
return true;
}
/**
* 修改数组元素
*/
public boolean modify(int oldValue, int newValue) {
int k = find(oldValue);
if (k == -1) {
System.out.println("元素:" + oldValue + "不存在");
return false;
} else {
intArrays[k] = newValue;
}
return true;
}
}
测试类
package arrays;
import arrays.init.MyArrays;
public class Test {
public static void main(String[] args) {
// 1. 实例化数组
MyArrays myArrays = new MyArrays(10);
// 2. 获取数组的大小
System.out.println("数组大小:" + myArrays.getSize());
// 3. 添加元素
System.out.println("添加元素:" + myArrays.add(2));
System.out.println("添加元素:" + myArrays.add(3));
// 4. 遍历数组
myArrays.display();
// 5. 根据下标查询元素
System.out.println("获取元素:" + myArrays.get(0));
// 6. 查找元素根据值
System.out.println("获取元素下标:" + myArrays.find(2));
// 7. 删除数组元素 根据元素值
System.out.println("删除元素:" + myArrays.delete(2));
myArrays.display();
// 8. 修改元素 oldValue newValue
myArrays.modify(3, 4);
myArrays.display();
}
}
结果
数组大小:0
添加元素:true
添加元素:true
2,3,
获取元素:2
获取元素下标:0
删除元素:true
3,
4,