java自定义数组扩容规则
- 扩容规则
当已存储元素数量达到总容量的 80%时,扩容 1.5 倍。 例如,总容量是 10,当输入第 8 个元素时,数组进行扩容,容量从 10 变 15 - 代码演示
import java.util.Scanner; public class ExtendArray{ public static void main(String[] args) { // 1.定义一个整形变量用来规定数组长度 int num = 10; // 2.定义一个整形数组 int[] arr = new int[num]; // 3.for循环往数组内赋值 // 9.定义一个flag 判断用户是否继续输入 Scanner sc = new Scanner(System.in); boolean flag = false; for(int i = 0; i < num; i++) { // 4.判断是否达到储存的80% 如果达到将 arr数组的容量扩大到原先的1.5倍 String msg = null; if(i >= (int)(num * 0.8)){ // 5.提示用户是否还要输入数据 如果继续输入则继续扩容 如果不输入则退出 System.out.println("是否还要继续入 y/n"); msg = sc.next(); if("y".equals(msg)){ flag = true; } if(flag){ // 6.建立一个新的数组 相比arr扩大1.5倍 num = (int) (num * 1.5); int[] arrs = new int[num]; // 7.将arr的元素复制到 Arrs System.arraycopy(arr, 0, arrs, 0, arr.length - 1); // 8.将arr回收 arr = arrs; } } // 9.退出扩容 if("n".equals(msg)){ break; } // 10.存入用户输入的数据 arr[i] = sc.nextInt(); } // 11.打印数组 System.out.print("用户输入的数据是"); for(int i = 0; i < num; i++) { if(arr[i] != 0){ System.out.print(" " + arr[i]); } } } }