我正在制作一个“普通”灯具发电机。因此,您输入名称/团队等,并创建一个需要播放的灯具表。
当输入“团队”时,他们会进入一个散列图,int的原因是每个团队都有分数,所以每个人都默认为0。
我正试图创造一种让每个人彼此相称的方法,我可以通过这种方法做到这一点。
public HashMap<String, String> genFixtures(HashMap<String, Integer> m_playerList){
HashMap<String, String> r_fixtures = new HashMap<String, String>();
ArrayList<String> m_fixtures = new ArrayList<String>();
for (String key : m_playerList.keySet()){
m_fixtures.add(key);
}
for (int i = 0; i < m_fixtures.size(); i++){
for (int j = i + 1; j < m_fixtures.size(); j++){
if (m_fixtures.get(i).equals(m_fixtures.get(j))){
continue;
} else {
r_fixtures.put(m_fixtures.get(i) , m_fixtures.get(j));
}
}
}
return r_fixtures;
}
这会创建一个带有字符串键和值的新hashmap,因为我希望hashmap存储每个团队,key是团队,值是团队(我觉得这是一个非常糟糕的方法)。 然后我将原始String,Int Hashmap的所有键添加到ArrayList,执行一个操作,它们彼此匹配,完全按照计划工作,然后将它们添加到String String hashmap并返回到此方法中单独的课程:
if(e.getSource()== m_generate){
HashMap<String, String> m_gend = new HashMap<String,String>();
m_gend = m_fix.genFixtures(m_playerList);
for(Map.Entry<String, String> entry : m_gend.entrySet()) {
String m_key = entry.getKey();
String m_value = entry.getValue();
m_labelNames.setText(m_labelNames.getText() + m_key + " v " + m_value + "\n");
}
}
但是当我将hashmap的内容添加到JTextArea时,我只想说我添加团队“Ceri”,“Harry”,“Matthew”。 输出的是
马修诉哈利 Ceri v Harry
但没有Ceri诉马修。
答案 0 :(得分:0)
当我将hashmap的内容添加到JTextArea时,我们可以说 我添加了团队&#34; Ceri&#34;,&#34; Harry&#34;,&#34; Matthew&#34;。输出的是
Matthew v Harry Ceri v Harry
因为Hashmap没有保留插入顺序。当您迭代Hashmap条目时,您将获得不同的不同值
您可以在文档
中找到它此课程不保证地图的顺序;在 特别是,它不保证订单将保持不变 随着时间的推移