java如何将新数据加入数组中
java中的数组是不可变的,要想将新数据加入数组,核心就是新建一个更长的数组然后将老数据复制,新数据添加到后面。
但具体操作时有多种方式,下面一一介绍。
适用于新手的方法
- 01
对新手来说,最易于理解的方法就是手动新建一个长度长1的数组,然后填充它。 代码如下 public static void main(String[] args) { int[] arr = new int[] {1,2,3,4,5}; System.out.println(Arrays.toString(addElementToArray(arr,6))); } public static int[] addElementToArray(int[] arr, int num) { int [] result = new int[arr.length+1]; for(int i=0;i<arr.length;i++) { result[i]=arr[i]; } result[result.length-1] = num; return result; }
- 02
输出如下,结果是正确的。
效率最高的方法
- 01
将中间的for循环,换成java库里面自带的 System.arraycopy方法可以提高效率
- 02
如果你觉得参数不好记的话,在eclipse或idea中打出System.arraycopy以后,看它智能提示里面的参数名字就能回想起来参数的含义。第一个是源数组,第二个是源数组起始位置,第三个是目标数组,第四个是目标数组起始位置,第五个是要复制的元素长度。 System.arraycopy(src, srcPos, dest, destPos, length); 也可以按住alt+鼠标左键查看jdk源码,里面的英文注释解释了参数含义。
Arrays.copyOf
- 01
Arrays.copyOf这个方法内部也是通过System.arraycopy实现的,效率基本一样,可以使代码更简洁。
使用List
- 01
如果数组类型是Integer而不是int,可以用List,List有add方法。ArrayList内部也是封装的数组,也会通过Arrays.copyOf这种方式来增加元素。 不过数组与List进行转换时,要注意可能会遇见很多问题,List不能添加元素的问题和数组类型的问题。
减少原生数组的使用
- 01
其实List或者其它集合类的设计,就是为了解决原生数组操作不方便的问题。没有必要为了提升那一点点的效率总是手工对数组元素进行操作,使用集合类就可以了。