考虑一下:
public Map<Integer, Point> setXY(int[] x, int[] y) {
Point point;
Map<Integer, Point> xy = new HashMap<Integer, Point>();
int key = 0;
for (int i = 0; i < x.length; i++) {
for(int j = 0; j < y.length; j++) {
point = new Point(x[i], y[j]);
xy.put(key, point);
key++;
}
}
return xy;
}
我有两个不同长度的int数组,我尝试为“n”Point对象创建唯一的坐标。 “n”表示“x.length + y.length”的值(例如,n = x [3] + y [5])。然后我将这些对象添加到我的hashmap中。问题是,这个嵌套的“for”指令为“i = 2”创建了例如带有坐标的五个点:(2,1),(2,2),(2,3),(2,4)和( 2,5)。我想要实现的是使用给定“x”和“x”的两个点创建的完全随机化。 “y”数组。你有什么想法吗?
修改
我现在正在考虑仅对Map键值进行随机化的可能性。 E. g。我在地图中有400个对象,所以如果我知道如何获得0-400范围内的随机唯一(!)值就足够了。当然价值观不能重复。这是整件事的关键。
答案 0 :(得分:3)
在集合中有一个随机方法,您可以使用它来以数组的随机顺序获取元素,但这些元素是唯一的。
Collections.shuffle(Arrays.asList(y));
这将改变数组y中元素的顺序。然后使用for循环进行迭代。