显示arrayList <int []>的内容

Sas*_*ank 0 java arraylist

下面的程序生成10对特定大小的随机数,并将它们存储在名为test的ArrayList中 -

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Random;

public class randomGenerate
{
    static ArrayList<String> tcase=new ArrayList<String>();
    static ArrayList<int[]> test=new ArrayList<int[]>();

    public static void main(String args[])
    {

        tcase.add("1");
        tcase.add("2");
        tcase.add("3");
        tcase.add("4");
        tcase.add("5");
        tcase.add("6");
        randomSelection(10,2);
        for(int i=0;i<test.size();i++)
        {
            System.out.println(Arrays.toString(test.get(i)));
        }
    }

    static int randomNo(int max,int min)
    {
        Random obj = new Random();
        int n = max - min + 1;
        int i = obj.nextInt(n);
        int randomNum =  min + i;
        return randomNum;   
    }

    static void randomSelection(int limit, int pairSize) 
    {
        int max = Integer.parseInt(Collections.max(tcase));
        int min = Integer.parseInt(Collections.min(tcase));
        System.out.println(max+"  "+min);
        int ar[]=new int[pairSize]; 
        for(int i = 0;i < limit;i++)
        {
            for(int j = 0;j < pairSize;j++)
            {
                ar[j]=randomNo(max,min);
                System.out.print(ar[j]);
            }
            test.add(ar);
            System.out.println();
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,在打印arrayList"test"的内容时,只显示最后一个值.为什么不显示所有值.

输出 - (例如)

23
65
45
63
12
23
52
52
16
12
[1, 2]
[1, 2]
[1, 2]
[1, 2]
[1, 2]
[1, 2]
[1, 2]
[1, 2]
[1, 2]
[1, 2]
Run Code Online (Sandbox Code Playgroud)

Ale*_* C. 6

您总是在每次迭代时修改并向列表添加相同的数组.

想想这样的情况:

在此输入图像描述

您需要在每次迭代时创建一个新数组:

for(int i = 0;i < limit;i++){
    int ar[]=new int[pairSize]; //create a new one at each iteration
    for(int j = 0;j < pairSize;j++){
       ar[j]=randomNo(max,min);
       System.out.print(ar[j]);
    }
    test.add(ar);
    System.out.println();
}
Run Code Online (Sandbox Code Playgroud)