IntsについてasList(int[]ints)のピット

1046 ワード

配列はやはり穴があいています.の
Ints.asList()中
    public static List asList(int... backingArray) {
        return (List)(backingArray.length == 0 ? Collections.emptyList() : new Ints.IntArrayAsList(backingArray));
    }

配列はメモリモデルでnewの場合、スタックが空間を開いた後にスタックで同じメモリアドレスを指すためです.
次のようにして得られた遍歴結果は同じです.
        int[] a = {1,2,3};
        List integers = Ints.asList(a);
        a[0] = 10;
        List integers1 = Ints.asList(a);
        integers.forEach(System.out::println);
        integers1.forEach(System.out::println);

 
異なる場合はnumsに関係しないアドレス指向でその値をそれぞれ新しいリストに割り当てて追加するしかない
さもないとresultを手に入れたのは同じだ
            List temp = new ArrayList<>();
            Ints.asList(nums).forEach(vo->temp.add(vo));
            result.add(temp);

上記の方法ではなく、配列をlistに変換する必要がある場合は、一時配列temp[]をSystemを使用することができる.Arraycopy(src,src Index,des,desIndex,length)numsを新しい一時配列tempにコピーしてInt.asList(temp)