数组的扩容与缩减

= = = = 数组的扩容与缩减= = = =

一、扩容基本思想
1、定义一个新数组,其类型与原来数组一致
2、新数组的容量比原数组 大1
3、把原数组的值遍历赋值给新数组
4、把要添加的数赋值在新数组的最后一个位置
5、把新数组 地址传递给 原数组,实现扩容
代码如下:

import java.util.Scanner;//数组的扩容
public class Array07{
	public static void main(String[] args) {
		Scanner myScanner = new Scanner(System.in);
		int[] arr = {1,2,3};//定义一个静态数组
		do{  
			int[] arrNew = new int[arr.length+1];//容量比原数组大 1
			for (int i = 0; i < arr.length ; i++) {
			arrNew[i] = arr[i];//把值赋给新数组
		}
			System.out.println("请输入要添加的数");
 			int num = myScanner.nextInt();//键盘输入要添加的值
			arrNew[arrNew.length-1] = num;//增加新元素 
			arr = arrNew;//地址传递实现原数组的扩容
		for (int i = 0;i < arr.length ; i++) {
			System.out.println(arr[i]+"\t");//输出新的数组
		}

		System.out.println("添加成功,是否继续?");
 		
 		char ans = myScanner.next().charAt(0);//判断是否还需要继续扩容
 		if(ans != 'y'){
 			break;
 		}

 		}while(true); //条件默认设置为真,在do里面判断条件,
 						//如果不满足则退出循环

 			
		System.out.println("你退出了添加");
	}

}


二、数组的缩减
1、数组的缩减相对于数组的扩容更简单,因为不用输入新元素,但是也需要判断当数组长度为 1 时 ,需要退出删除操作。代码如下

import java.util.Scanner;
public class Array08{
	public static void main(String[] args) {
		Scanner myScanner = new Scanner(System.in);
		int[] arr = {1,2,3,5,8,9,22,44};
		do{
		int[] arrNew = new int[arr.length-1];
		for (int i = 0; i < arr.length-1 ; i++) {//删除最后一个元素后数组长度 - 1
			arrNew[i] = arr[i];//赋值
		}
		
			arr = arrNew;	//指向同一个地址
		for (int i = 0;i < arr.length ; i++) {
			System.out.println(arr[i]+"\t");//输出新的数组
		}
		if(arr.length < 2){
			System.out.println("已经是最后一个元素,不能删除!");
			break;
		}
		System.out.println("删除成功,是否继续?");
 		
 		char ans = myScanner.next().charAt(0);//键盘输入是否继续删除
 		if(ans != 'y'){
 			break;
 		}

 		}while(true);

 			
		System.out.println("你退出了删除");
	}

}


版权声明:本文为qq_45821255原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。