Java HashMap到组合框
我试图从“teamPlayers”hashmap中获取与“match”对象中的键“i”和“j”相对应的值,这些键将被放入组合框“homebox、homebox 2、awaybox、awaybox 2”。当我尝试向组合框添加四个值时,它只添加最后两个值。不知道是否有人有任何想法,我可以尝试阻止这种情况发生,让它增加更多的价值比两个它现在添加。谢谢各位Java HashMap到组合框,java,javafx,combobox,hashmap,Java,Javafx,Combobox,Hashmap,我试图从“teamPlayers”hashmap中获取与“match”对象中的键“i”和“j”相对应的值,这些键将被放入组合框“homebox、homebox 2、awaybox、awaybox 2”。当我尝试向组合框添加四个值时,它只添加最后两个值。不知道是否有人有任何想法,我可以尝试阻止这种情况发生,让它增加更多的价值比两个它现在添加。谢谢各位 public void generateMatches (String homeTeam, String awayTeam){ bo
public void generateMatches (String homeTeam, String awayTeam){
boolean bool = false;
int x = 0;
arrayLength = teamPlayers.size();
for (String i : teamPlayers.keySet()){
for (String j : teamPlayers.keySet()){
if (teamPlayers.get(i).equals(teamPlayers.get(j)) && !bool){
bool = true;
}else if (bool){
Match matches = new Match(i,j);
homeTeam = matches.getHomeTeam();
awayTeam = matches.getAwayTeam();
scoreHomeTeam.getItems().add(matches.getHomeTeam());
scoreAwayTeam.getItems().add(matches.getAwayTeam());
while(x<teamPlayers.size()){
for (Entry<String,String> e : teamPlayers.entrySet()){
homeBox.getItems().add(e.getValue());
homeBox2.getItems().add(e.getValue());
awayBox.getItems().add(e.getValue());
awayBox2.getItems().add(e.getValue());
}
x++;
}
System.out.println("\nMatch created between "+ homeTeam + " & "+ awayTeam);
}
}
bool = false;
}
}
public void generateMatches(字符串homeTeam、字符串awayTeam){
布尔布尔布尔=假;
int x=0;
arrayLength=teamPlayers.size();
for(字符串i:teamPlayers.keySet()){
for(字符串j:teamPlayers.keySet()){
如果(teamPlayers.get(i).equals(teamPlayers.get(j))&&&!bool){
布尔=真;
}否则如果(bool){
匹配=新匹配(i,j);
homeTeam=matches.getHomeTeam();
awayTeam=matches.getAwayTeam();
scoreHomeTeam.getItems().add(matches.getHomeTeam());
scoreAwayTeam.getItems().add(matches.getAwayTeam());
而(x我认为您正在尝试根据HashMap
中的团队生成匹配
首先,您没有解释teamPlayersHashMap
的结构,但我相信您的问题在于如何使用HashMap
存储您的玩家。
您将它们存储为{TeamName=PlayerName}组合,但与任何Map
一样,键必须是唯一的
因此,在初始化地图时,您可能正在丢弃玩家:
Map<String, String> teamPlayers = new HashMap<String, String>();
teamPlayers.put("Team 1", "Player 1");
teamPlayers.put("Team 1", "Player 2"); // --> overwrites Player 2
teamPlayers.put("Team 2", "Player 3");
teamPlayers.put("Team 2", "Player 4"); // --> overwrites Player 3
System.out.println(teamPlayers);
打印出来
{第一队=[球员1,球员2],第二队=[球员3,球员4]}
其次,如果您想在teamPlayersMap
中使用团队组合生成匹配,则需要采用不同的方法。
最好将所有东西分开:
初始化分组在列表中的玩家
初始化可能的匹配组合
为某个匹配组合初始化GUIComboBox
一个可运行的示例类可以帮助您完成以下任务
public class MatchFixer {
private Map<String, List<String>> teamPlayers;
public MatchFixer() {
teamPlayers = new HashMap<String, List<String>>();
teamPlayers.put("Team 1", Arrays.asList(new String[] { "Player 1_1", "Player 1_2" }));
teamPlayers.put("Team 2", Arrays.asList(new String[] { "Player 2_1", "Player 2_2" }));
teamPlayers.put("Team 3", Arrays.asList(new String[] { "Player 3_1", "Player 3_2" }));
}
public List<Match> generateMatches(){
List<Match> matches = new ArrayList<Match>();
for (String homeTeam : teamPlayers.keySet()){
for (String awayTeam : teamPlayers.keySet()){
if (!homeTeam.equals(awayTeam)){
Match match = new Match(homeTeam, awayTeam);
matches.add(match);
System.out.println("\tMatch created between "+ homeTeam + " & "+ awayTeam);
}
}
}
return matches;
}
public void initMatch(Match match){
String homeTeam = match.getHomeTeam();
String awayTeam = match.getAwayTeam();
List<String> homePlayers = teamPlayers.get(homeTeam);
List<String> awayPlayers = teamPlayers.get(awayTeam);
scoreHomeTeam.getItems().add(homeTeam);
scoreAwayTeam.getItems().add(awayTeam);
homeBox.getItems().addAll(homePlayers);
homeBox2.getItems().addAll(homePlayers);
awayBox.getItems().addAll(awayPlayers);
awayBox2.getItems().addAll(awayPlayers);
System.out.println("\tMatch initialized between "+ homeTeam + " -> "+ homePlayers +" & "+ awayTeam +" -> "+ awayPlayers);
}
public static void main(String[] args) {
MatchFixer fixer = new MatchFixer();
// Initialize matches with all the combinations of teams
System.out.println("Initialize the match combinations:");
List<Match> matches = fixer.generateMatches();
// Let's initialize the first of our generated matches
System.out.println("\nInitialize match 1:");
fixer.initMatch(matches.get(0));
}
}
公共类匹配修复程序{
私人地图团队成员;
公共匹配修复程序(){
teamPlayers=newhashmap();
teamPlayers.put(“team1”,Arrays.asList)(新字符串[]{“player1_1”,“player1_2”});
teamPlayers.put(“team2”,Arrays.asList)(新字符串[]{“player2_1”,“player2_2”});
teamPlayers.put(“team3”,Arrays.asList)(新字符串[]{“player3u1”,“player3u2”});
}
公共列表生成器匹配(){
列表匹配项=新的ArrayList();
for(字符串homeTeam:teamPlayers.keySet()){
for(字符串awayTeam:teamPlayers.keySet()){
如果(!homeTeam.equals(awayTeam)){
比赛=新的比赛(主队,awayTeam);
匹配。添加(匹配);
System.out.println(“\t在“+homeTeam+”和“+awayTeam”之间创建的匹配);
}
}
}
返回比赛;
}
公共无效初始匹配(匹配){
String homeTeam=match.getHomeTeam();
字符串awayTeam=match.getAwayTeam();
列出家庭成员=团队成员。获取(家庭成员);
列出awayPlayers=teamPlayers.get(awayTeam);
scoreHomeTeam.getItems().add(homeTeam);
scoreAwayTeam.getItems().add(awayTeam);
homeBox.getItems().addAll(HomePlayer);
homeBox2.getItems().addAll(HomePlayer);
awayBox.getItems().addAll(awayPlayers);
awayBox2.getItems().addAll(awayPlayers);
System.out.println(“\t在“+homeTeam+”->“+homePlayers+”&“+awayTeam+”->“+awayPlayers”之间初始化的匹配);
}
公共静态void main(字符串[]args){
MatchFixer fixer=新的MatchFixer();
//使用所有团队组合初始化匹配
System.out.println(“初始化匹配组合:”);
List matches=fixer.generateMatches();
//让我们初始化生成的第一个匹配项
System.out.println(“\n初始化匹配1:”;
initMatch(matches.get(0));
}
}
打印出来
初始化匹配组合:
团队3和团队1之间创建的匹配
团队3和团队2之间创建的匹配
团队1和团队3之间创建的匹配
团队1和团队2之间创建的匹配
团队2和团队3之间创建的匹配
团队2和团队1之间创建的匹配
初始化匹配1:
3队->[球员3\u 1,球员3\u 2]和1队->[球员1\u 1,球员1\u 2]之间的比赛已初始化
我们需要更多的信息来帮助您。例如,您的团队成员地图中有什么?分步骤思考。1.获得主队成员。2.获得客场球员。3.将主队球员添加到客场球员。4.将客场球员添加到客场球员。干得好@George Derpi。我假设键
值是一个球员列表
谢谢你,伙计,我真的很感激!
public class MatchFixer {
private Map<String, List<String>> teamPlayers;
public MatchFixer() {
teamPlayers = new HashMap<String, List<String>>();
teamPlayers.put("Team 1", Arrays.asList(new String[] { "Player 1_1", "Player 1_2" }));
teamPlayers.put("Team 2", Arrays.asList(new String[] { "Player 2_1", "Player 2_2" }));
teamPlayers.put("Team 3", Arrays.asList(new String[] { "Player 3_1", "Player 3_2" }));
}
public List<Match> generateMatches(){
List<Match> matches = new ArrayList<Match>();
for (String homeTeam : teamPlayers.keySet()){
for (String awayTeam : teamPlayers.keySet()){
if (!homeTeam.equals(awayTeam)){
Match match = new Match(homeTeam, awayTeam);
matches.add(match);
System.out.println("\tMatch created between "+ homeTeam + " & "+ awayTeam);
}
}
}
return matches;
}
public void initMatch(Match match){
String homeTeam = match.getHomeTeam();
String awayTeam = match.getAwayTeam();
List<String> homePlayers = teamPlayers.get(homeTeam);
List<String> awayPlayers = teamPlayers.get(awayTeam);
scoreHomeTeam.getItems().add(homeTeam);
scoreAwayTeam.getItems().add(awayTeam);
homeBox.getItems().addAll(homePlayers);
homeBox2.getItems().addAll(homePlayers);
awayBox.getItems().addAll(awayPlayers);
awayBox2.getItems().addAll(awayPlayers);
System.out.println("\tMatch initialized between "+ homeTeam + " -> "+ homePlayers +" & "+ awayTeam +" -> "+ awayPlayers);
}
public static void main(String[] args) {
MatchFixer fixer = new MatchFixer();
// Initialize matches with all the combinations of teams
System.out.println("Initialize the match combinations:");
List<Match> matches = fixer.generateMatches();
// Let's initialize the first of our generated matches
System.out.println("\nInitialize match 1:");
fixer.initMatch(matches.get(0));
}
}