Array常用操作
将数组a的一部分复制到数组b中,java.lang.System的方法arraycopy
- System.arraycopy(Object src,int srcPos,Object dest,int destPos,int length);
将数组具体内容输出,直接syso数组变量会得到[Ltype;@xxxx的结果,要输出具体元素可以使用Arrays.toString()方法
复制一个新的数组,Arrays.copyOf(T[] original, int newLength),newLength小于原数组截断,长于原数组补null或0
list转数组,Object[] toArray()与 T[] toArray(T[] a)方法,两个方法有一定区别
- Object[] toArray():返回一个新的Object[]数组,其实就是把list内部的数组,如ArrayList的elementData[]复制出来
T[] toArray(T[] a):若a的长度小于list长度,则新建并复制一个数组再进行类型转换,若a的长度大等于list大小,则在a上直接复制,a长度大于list的size,a[zize]会被置为null,doc上说是为了识别list的长度(原list元素都是非空的情况下),这种情况比较少见,一般常见的用法是构造一个与原来list相同长度的数组:
E[] arr = list.toArray(new E[list.size()])
public static void main(String[] args) { String[] src = {"1","2","3","4","5"}; String[] dst = {"a","b","c","d"}; int[] nums = {1,2,3,4,5}; System.arraycopy(src,1,dst,1,2); //dst被修改 System.out.println(Arrays.toString(dst)); //[a, 2, 3, d] System.out.println(dst.getClass()); //class [Ljava.lang.String; System.out.println("a".getClass()); //class java.lang.String System.out.println(Arrays.toString(Arrays.copyOf(nums, 7))); //[1, 2, 3, 4, 5, 0, 0] ArrayList<String> list = Lists.newArrayList("1","2","3","4","5"); System.out.println(Arrays.toString(list.toArray(new String[list.size()]))); //[1, 2, 3, 4, 5] String[] a = {"a","b","c","d","e","f","g"}; System.out.println(Arrays.toString(list.toArray(a))); //[1, 2, 3, 4, 5, null, g] }