将ArrayList <integer>转换为int []不会在Java中工作

时间:2016-10-22 22:43:04

标签: java arraylist int

我一直在开发一个程序,我必须将ArrayList转换为int []。运行代码时,我没有遇到任何语法错误。但是,当我打印int []以查看它是否有效时,它会打印出一个随机字符串,这是&#34; [I @ 2a139a55&#34;我怎样才能解决这个问题?

我不能从一开始就使用int []。该程序用于将ArrayList转换为int []。

        ArrayList<Integer> student_id = new ArrayList<Integer>();
       student_id.add(6666);
       student_id.add(7888);    

       int[] student_id_array = new int[student_id.size()];
       for (int i=0, len = student_id.size(); i < len; i ++){
            student_id_array[i] = student_id.get(i);
       }
       System.out.println(student_id_array);

3 个答案:

答案 0 :(得分:1)

您正在打印出对阵列的引用。使用Arrays.toString(int[])

答案 1 :(得分:1)

您可以使用Java 8中的一行将ArrayList<Integer>转换为int[]

int[] student_id_array = student_id.stream().mapToInt(id -> id).toArray();

如果您想输出数组的值而不是数组的表示形式(,如[I@2a139a55 ),请使用Arrays.toString()方法:

System.out.println(Arrays.toString(student_id_array));

答案 2 :(得分:0)

那是因为你要打印那个数组的内存地址。

试试这个:

   ArrayList<Integer> student_id = new ArrayList<Integer>();
   student_id.add(6666);
   student_id.add(7888);    

   int[] student_id_array = new int[student_id.size()];
   for (int i=0, len = student_id.size(); i < len; i ++){
        student_id_array[i] = student_id.get(i);
   }
   System.out.println(student_id_array[0]+" "+student_id_array[1]);

输出:

6666 7888

如果您稍后填充for-loop,请使用ArrayList