gpt4 book ai didi

java - 接口(interface)中的方法不能应用于给定类型;带 HashMap

转载 作者:行者123 更新时间:2023-12-02 01:33:05 26 4
gpt4 key购买 nike

我正在对我的大学教科书进行一些修订 Activity ,并陷入了这个问题。我们正在处理 map 和列表,所提出的问题需要我检查团队 map 中是否已存在该部门的列表,并将新团队添加到已存在的部门中。

如果没有,则创建一个新的空列表并向其中添加新团队,将部门指定为键,将新列表指定为值。

重新阅读了几次 Material 后,我开始理解我需要做什么,但是当我进行编译时,它给了我一个方法 put interface.java.util.Map 错误。

其中提供了解释

The operator that you use here cannot be used for the type of value that you are using it for. You are either using the wrong here, or the wrong operator.

我重新阅读了这些 Material ,在线研究,甚至购买了 udemy 类(class)来了解 map 及其工作原理。

查看过去的试卷很有帮助,据我了解,问题在于第 33 行的 .put 操作,但我读到的所有内容都是在使用 map 时,.put 是向 map 添加信息的方式。

所以我不知道为什么会收到此错误。无奈之下,查看了和我一样的历年考试答案,并测试了他们的代码,编译没有错误。

我非常想了解为什么,而不是查看 Material 后面并仅查看答案,因为这是为了修订。

我们要修改的LeagueAdmin()类的代码如下

import java.util.*;

public class LeagueAdmin
{
private SortedMap<String, Set<String>> teams;
/**
* Constructor for objects of class LeagueAdmin
*/
public LeagueAdmin()
{
// Create the HashMap
//Map<String, Team> teams = new HashMap<>();
super();
this.teams = new TreeMap<>();

}

public void addTeam(String division, Team team)
{
boolean changed;

if (!this.teams.containsKey(division)) // checks if the key division doesn't contain the value of divsioin
{
HashSet<Team> teamSet = new HashSet<>(); // instantiates a list of objects called Team and assigns them to local variable teamSet
teamSet.add(team); // adds a new team to the list

this.teams.put(division, teamSet);
changed = true;
}
else
{
Set<Team> teamSet = this.teams.get(division); // if list exists already adds new team to existing list
changed = teamSet.add(team);
}

}
}

我们还获得了另一个类(class)团队,我将其包括在下面。


/**
* class Team for TMA03Q2.
*
* @author (M250 module team)
* @version (1.0)
*/
public class Team
{
private String name;
private String division;
private int won;
private int drew;
private int lost;
// no need to record points as = 3*won + drew


/**
* Constructor for objects of class Team
*/
public Team(String aName, String aDivision)
{
name = aName;
division = aDivision;
// no need to set won, drew and lost to 0
}


/**
* getter for attribute points
*/
public int getPoints()
{
return 3 * won + drew;
}

/**
* getter for name
*/
public String getName()
{
return name;
}

/**
* getter for division
*/
public String getDivision()
{
return division;
}
/**
* getter for won
*/
public int getWon()
{
return won;
}

/**
* getter for drew
*/
public int getDrew()
{
return drew;
}

/**
* getter for lost
*/
public int getLost()
{
return lost;
}

/**
* increments the number of games won
*/
public void incWon()
{
won = won + 1;
}

/**
* increments the number of games drawn
*/
public void incDrew()
{
drew = drew + 1;
}

/**
* increments the number of games lost
*/
public void incLost()
{
lost = lost + 1;
}

/**
* setter for division
*/
public void setDivision(String aDivision)
{
division = aDivision;
}

public String toString()
{
return ("Team " + name + ", division: " + division + " stats: Won: " + won
+ ", drew: " + drew + ", lost: " + lost + ", points: " + getPoints());
}

}

它应该接受新的部门和团队,检查是否已有列表并相应更新,但我无法克服此错误。

因此,对于我出错的地方,任何帮助都会得到极大的帮助。因为我想了解问题是如何发生的,而不是只看答案而不理解。

最佳答案

你有

private SortedMap<String, Set<String>> teams;

然后尝试输入 Set<Team>进入其中

HashSet<Team> teamSet = new HashSet<>(); // instantiates a list of objects called Team and assigns them to local variable teamSet
...
this.teams.put(division, teamSet);

更新您的teams成为Map<String, Set<Team>>或更改 teamSet成为Set<String> .

关于java - 接口(interface)中的方法不能应用于给定类型;带 HashMap ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55728388/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com