数据结构之数组操作
数据结构同步开始入门,今天做了一点简单的操作:
- 往数组末尾添加元素
- 删除指定下标的元素
- 取出指定下标的元素
- 插入某个元素到数组的指定下标位置
- 替换指定位置的元素
package array;
public class TestMyArray {
public static void main(String[] args) {
MyArray ma = new MyArray();
//往数组末尾添加元素
ma.add(99);
ma.add(98);
ma.add(97);
ma.add(96);
ma.add(95);
ma.add(94);
ma.add(93);
ma.show();
//删除某个元素
ma.delete(2);
ma.show();
//取出指定位置的元素
ma.get(3);
//插入元素到指定位置
ma.insert(3, 0);
ma.show();
//替换指定位置的元素
ma.set(3, 10);
ma.show();
}
}
package array;
import java.util.Arrays;
import javax.management.RuntimeErrorException;
public class MyArray {
//创建数组并初始化
private int[] arr;
public MyArray(){
arr = new int[0];
}
//获取数组长度
public int size(){
return arr.length;
}
//往数组末尾添加元素
public void add(int element){
//创建一个新的数组
int[] newArr = new int[arr.length + 1];
//将原数组元素复制进新数组
for(int i = 0;i < arr.length;i++){
newArr[i] = arr[i];
}
//在新数组末尾添加新元素
newArr[arr.length] = element;
//将新数组赋值给原数组
arr = newArr;
}
//删除制定下标的元素
public void delete(int index){
//创建一个新数组
int[] newArr = new int[arr.length - 1];
//将制定下标之前和之后的元素放入新数组
int j = 0;
for(int i = 0;i < arr.length;i++){
//判断下标是否越界
if(index < 0 || index > arr.length - 1){
throw new RuntimeException("下标越界");
}
//若等于制定下标,跳过一次循环
if(index == i) continue;
newArr[j++] = arr[i];
}
//将新数组赋值给原数组
arr = newArr;
}
//取出指定位置的元素
public void get(int index){
//判断下标是否越界
if(index < 0 || index > arr.length - 1){
throw new RuntimeException("下标越界");
}
System.out.println("下标为" + index + "的元素是:" + arr[index]);
}
//插入元素到指定位置
public void insert(int index, int element){
//判断下标是否越界
if(index < 0 || index > arr.length - 1){
throw new RuntimeException("下标越界");
}
//创建一个新的数组
int[] newArr = new int[arr.length + 1];
//将制定位置之前的元素和之后的元素赋值给行数组
for(int i = 0;i < arr.length; i++){
if(i < index){
newArr[i] = arr[i];
}else{
newArr[i + 1] = arr[i];
}
}
//将指定位置的元素单独插入
newArr[index] = element;
//将新数组赋值给原数组
arr = newArr;
}
//替换指定位置的元素
public void set(int index, int element){
//判断下标是否越界
if(index < 0 || index > arr.length - 1){
throw new RuntimeException("下标越界");
}
arr[index] = element;
}
//打印数组
public void show(){
System.out.println(Arrays.toString(arr));
}
}
运行结果:
[99, 98, 97, 96, 95, 94, 93]
[99, 98, 96, 95, 94, 93]
下标为3的元素是:95
[99, 98, 96, 0, 95, 94, 93]
[99, 98, 96, 10, 95, 94, 93]