作者:小鬼6Pi7 | 来源:互联网 | 2022-11-21 12:17
提前谢谢你的时间!我正在研究Fruchterman Reingold Graph的创建者,我陷入了一个似乎非常简单的问题.简而言之,我想初始化一个包含Integer键的Hashmap,即我所处的顶点,以及x位置和y位置的整数List.但是,以下代码放置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> positiOns=new HashMap>();
List temp = new ArrayList();
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] and so on
.
1> Eran..:
您应该ArrayList
为您的每个值创建一个新的Map
:
for (int i=0; i<=n; i++){
List 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
.