gpt4 book ai didi

java - 如何通过 Hashmap> 分配比预期更多的值来修复循环

转载 作者:行者123 更新时间:2023-12-01 16:44:45 26 4
gpt4 key购买 nike

提前感谢您抽出宝贵的时间!我正在研究 Fruchterman Reingold Graph 创建者,我陷入了一个看似非常简单的问题。长话短说,我想初始化一个包含整数键(即我所在的顶点)的 HashMap ,以及 x 位置和 y 位置的整数列表。然而,以下代码为每个键放置 8 个而不是 2 个位置值,而不是 2 个。任何帮助或提示,我们将不胜感激!

package testing.ground;

import java.util.*;


public class TestingGround {


public static void main(String[] args) {


Random ranx = new Random();
Random rany = new Random();
HashMap<Integer,List<Integer>> positions=new HashMap<Integer,List<Integer>>();
List<Integer> temp = new ArrayList<Integer>();

int n = 3;
int area = 1280*720;
int vposx=0;
int vposy=0;


double k = 0.5*(Math.sqrt(area/n));
for (int i=0; i<=n; i++){
vposx=ranx.nextInt(1280)+1;
vposy=rany.nextInt(720)+1;
temp.add(vposx);
temp.add(vposy);
positions.put(i,temp);

}
System.out.println(positions);
}
}

结果如下

{0=[1063, 102, 41, 391, 614, 418, 751, 599], 1=[1063, 102, 41, 391, 614, 418, 751, 599], 2=[1063, 102, 41, 391, 614, 418, 751, 599], 3=[1063, 102, 41, 391, 614, 418, 751, 599]}

预期的只是0=[randomx,randomy]、2=[randomx,randomy]等等

最佳答案

您应该为 Map 的每个值创建一个新的 ArrayList:

for (int i=0; i<=n; i++){
List<Integer> temp = new ArrayList<>();
vposx=ranx.nextInt(1280)+1;
vposy=rany.nextInt(720)+1;
temp.add(vposx);
temp.add(vposy);
positions.put(i,temp);
}

否则,您会将 Map 中的所有键与相同的值 List 相关联。

关于java - 如何通过 Hashmap<int<arraylist>> 分配比预期更多的值来修复循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54199488/

26 4 0