Java 如何将两个int数组混合到唯一的xy坐标贴图中?

Java 如何将两个int数组混合到唯一的xy坐标贴图中?,java,arrays,for-loop,hashmap,Java,Arrays,For Loop,Hashmap,考虑这一点: 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 <

考虑这一点:

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;
}
publicmap setXY(int[]x,int[]y){
点-点;
Map xy=新的HashMap();
int键=0;
对于(int i=0;i
我有两个不同长度的int数组,我尝试为“n”点对象创建唯一的坐标。“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”和“y”数组对点创建进行完全随机化。你有什么想法吗

编辑


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

在集合中有一种洗牌方法,您可以使用它以数组的随机顺序获取元素,但它是唯一的

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

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

这毫无价值,因为我已经为Hashmap指定了键值,例如。G从0到100。在这种情况下,当我洗牌我的地图时,我不会改变任何东西,因为在从地图中获取特定元素时,我必须使用一个键。是的,但与该键对应的值将是随机的,这似乎是您想要的。您可以将键值作为一个列表进行洗牌,然后遍历它。@arynaq,我没有做到,你跳到我身上:)是的,现在我可以看到了。基本上,我将创建一个映射长度(n)范围内的数组,其中的值从“0”到0+1,0+2…0+n。接下来我将洗牌。然后只需使用新的无序数组的索引,就像我的地图键:)太棒了,谢谢你们!