对数组元素进行操作

增加,删除,取出,插入和替换

Posted by Ruizhi Ma on May 8, 2019

数据结构之数组操作

数据结构同步开始入门,今天做了一点简单的操作:

  1. 往数组末尾添加元素
  2. 删除指定下标的元素
  3. 取出指定下标的元素
  4. 插入某个元素到数组的指定下标位置
  5. 替换指定位置的元素
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]