1

考虑一下:

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”点对象创建唯一坐标。“n”表示“x.length + y.length”的值(例如 n = x[3] + y[5])。然后我将这些对象添加到我的哈希图中。问题是,这个嵌套的“for”指令为“i = 2”创建了五个坐标点:(2, 1), (2, 2), (2, 3), (2, 4) 和 ( 2、5)。我想要实现的是使用这两个给定的“x”和“y”数组来完全随机化点创建。你有什么想法?

编辑

我现在正在考虑仅对 Map 键值进行随机化的可能性。例如。我在地图中有 400 个对象,所以如果我知道如何从 0-400 范围内获取随机唯一(!)值就足够了。当然价值观不能重复。这是整个事情的关键。

4

1 回答 1

3

在 Collections 中有一个 shuffle 方法,您可以使用该方法以数组的随机顺序获取元素但唯一。

Collections.shuffle(Arrays.asList(y));

这将打乱数组 y 中元素的顺序。然后使用 for 循环进行迭代。

于 2013-10-02T02:11:40.663 回答