public class ArrList { public static int[] resizeArr(int[] arr, int newSize) { int[] original=arr; arr=new int[newSize]; int length=Math.min(original.length,newSize); for(int i=0;i<length;i++) arr[i]=original[i]; original=null; return arr; } public static void println(int[] arr) { System.out.println("输出数组元素的个数为"+arr.length); } public static void main(String[] args) { int[] arr=new int[10]; for(int i=0;i<arr.length;i++) { arr[i]=0; } resizeArr(arr,20); println(arr); } } 搞定了 但是不知道对不对,各位大虾看一下,那里还需要修改?
某些情况下可能会丢失数据哦,当你newSize较小的时候,原数据会丢失。还有就是JDK提供有现成的方法了package test;import java.util.Arrays; public class Test { public static int[] resizeArr(int[] objs, int newSize){ if(objs.length >= newSize){ System.out.println("新数组的长度不足。"); return null; }
return Arrays.copyOf(objs, newSize); }
public static void main(String[] args) { int[] is = Test.resizeArr(new int[]{1,2,3,4,5}, 10); for(int i : is){ System.out.println(i); } } }
说下我的方法吧!
先new一个数组,然后在每次存放数据的时候,判断数组存放数据已满,满的话,再new一个数组,将原来数组的数据copy到新数组就可以了。
将新数组length增加为原来的一倍或者一半
{
public static int[] resizeArr(int[] arr, int newSize)
{
int[] original=arr;
arr=new int[newSize];
int length=Math.min(original.length,newSize);
for(int i=0;i<length;i++)
arr[i]=original[i];
original=null;
return arr;
}
public static void println(int[] arr)
{
System.out.println("输出数组元素的个数为"+arr.length);
}
public static void main(String[] args)
{
int[] arr=new int[10];
for(int i=0;i<arr.length;i++)
{
arr[i]=0;
}
resizeArr(arr,20);
println(arr);
}
}
搞定了 但是不知道对不对,各位大虾看一下,那里还需要修改?
public class Test { public static int[] resizeArr(int[] objs, int newSize){
if(objs.length >= newSize){
System.out.println("新数组的长度不足。");
return null;
}
return Arrays.copyOf(objs, newSize);
}
public static void main(String[] args) {
int[] is = Test.resizeArr(new int[]{1,2,3,4,5}, 10);
for(int i : is){
System.out.println(i);
}
}
}