This question already has answers here:
How to create ArrayList (ArrayList<Integer>) from array (int[]) in Java
                                
                                    (5个答案)
                                
                        
                                5年前关闭。
            
                    
我有以下代码:

static boolean nextPerm(int[] A) {
        int N = A.length;
        int k = N - 1;
        int[] S = { };
        while (k >= 0) {
            if (S.length > 0 && containsLarger(S, A[k])) {
                int v = firstLargest(S, A[k]);
                //int vIndex = Arrays.asList(S).indexOf(v);
                List<Integer> test = Arrays.asList(S); // // ERRORS HERE. Before error, S is { 2 }
                System.out.println(test.get(0));
                int vIndex = test.indexOf(S);
                S[vIndex] = A[k];
                A[k] = v;
                System.arraycopy(S, 0, A, k + 1, N - k);
                return true;
            } else {
                S = addIntAscend(S, A[k]);
                k -= 1;
            }
        }
        return false;
    }


在错误之前,S是一个int数组{2}。将TEST设置为Arrays.asList(S)时出错:

Perms.java:44: error: incompatible types
                List<Integer> test = Arrays.asList(S);
                                                  ^
  required: List<Integer>
  found:    List<int[]>
1 error


为什么会这样呢?我以为原语是自动装箱的?

最佳答案

看一下由于以下原因而被关闭为Not an Issuebug report


  整个数组的自动装箱未指定行为
  原因。对于大型阵列,它可能会非常昂贵。


因此,要将数组转换为列表,您需要执行此操作

List<Integer> test = new ArrayList<Integer>(S.length);
for (int i : S) {
    test.add(i);
}

关于java - 自动装箱不起作用? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19266195/

10-10 11:28