在java中生成一个随机点数组,没有重复项

1 java random

我是Java的新手,我想生成一个长度为'number'的随机(x,y)坐标数组,它不包含重复项.可以重复x或y值,但必须没有重复的(x,y)坐标.输出不必是Points,只是某种方式来保持坐标的x,y值.

我可以生成一个随机点数组,并尝试使用Set来确保没有重复值,但遇到了问题.我尝试使用条件"while(set.size)"和应该禁止重复的'add'方法,以创建包含唯一点的正确大小的输出.

这是代码:

Set<Point> set = new HashSet<Point>();
Random position = new Random();
Point test=new Point();

do{
    test.x=position.nextInt(xx);
    test.y=position.nextInt(yy);   
    //xx and yy are the random number limits called from another part of the code
    set.add(test);     
}
while (set.size()<number);

List<Object> list = new ArrayList<Object>(set);
Object[] coord = list.toArray();
Run Code Online (Sandbox Code Playgroud)

这会输出一个正确长度的数组,但每个元素都是相同的.有人可以提供任何帮助吗?

谢谢

ccK*_*Kep 5

每次循环时,测试指向空间中的相同变量,以修复在循环内创建新实例 - 不仅仅是在它之前一次:

Set<Point> set = new HashSet<Point>();
Random position = new Random();
Point test;

do{
    test = new Point();
    test.x=position.nextInt(xx);
    test.y=position.nextInt(yy);   
    //xx and yy are the random number limits called from another part of the code
    set.add(test);     
}
while (set.size()<number);

List<Object> list = new ArrayList<Object>(set);
Object[] coord = list.toArray();
Run Code Online (Sandbox Code Playgroud)