参考团队对象列表的hashmap Java足球队地图
我是Java新手,目前正忙于一个作业问题
我需要为LeagueAdmin类创建一个名为addTeam()的方法,它接受两个参数,不返回任何值。我得到了标题:public void addTeam(字符串部门,团队)
该方法应该检查团队地图中是否已经存在该部门的列表
如果该列表存在,则应将新团队添加到该部门的现有团队列表中
如果列表不存在,则应创建一个新的空团队列表,并将新团队添加到其中,然后应在团队中创建一个新的键值对,以分区为键,以新列表为值
我的代码如下:
import java.util.*;
public class LeagueAdmin
{
public Map<String, List<Team>> teams;
/**
* Constructor for objects of class LeagueAdmin
*/
public LeagueAdmin()
{
this.teams = new HashMap<String, List<Team>>();
}
}
我有如下单独的课程:
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
}
}
如果有人能给我一些建议那就太好了
谢谢,凯特
# 1 楼答案
在回答你的问题之前,有几点建议
final
final
字段,而不是在构造函数内部编辑:也许你需要一个简化版,我还要补充一点,但是继续阅读我所有的答案,这很有趣强>
按照代码中的注释理解流程
现在,对于一个更为“新”和简化的版本,,它与上面的版本做了完全相同的事情,,实现将是
自Java8以来,
Map
接口公开了一个新方法它的作用是
另外,你会问自己什么是
__ ->
嗯,
__
只是一个有效的变量名,用于表示“嘿,我不需要这个”->
(箭头)是lambda表达式的一部分,它基本上是一个内联函数# 2 楼答案
建议{}的{{a1}是正确的,但可能不是您的课程讲师想要的。她/他可能希望您编写更多的代码,就像我们在最近添加新方法之前在实际工作中所做的那样
需要添加到
LeagueAdmin
的老式addTeam(String division, Team team)
方法会询问map是否有用于除法字符串的键。如果没有这样的键,添加一个,并将一个新的空的List
团队作为其值,您已经添加了相关的团队。如果有这样一个键,则检索其值aList
,然后将有问题的团队添加到该列表中作为一项家庭作业,要完成学习,你需要努力解决这个问题,而不是复制一些现有的代码研究^{} 和^{} 接口的JavaDoc。按照我上面的文章作为伪代码来引导您了解逻辑。确保您理解每个类背后的思想,尤其是key-value pairing of a map(也称为字典或关联数组)。在纸上画一张图表,想象我上面概述的每一步
所以一个league对象持有一个
Map
对象。该映射包含一组键,每个键都是一个部门名称(在您的情况下是String
,在实际工作中更可能是Division
类)。作为映射中的一个键意味着每个部门名称将引导您找到一个List
对象,一个团队集合。一个List
按项目添加的顺序保存项目。顺便说一句,ASet
也希望在这里工作请注意,在这个图中,
List
对象中的一个是空的,这意味着它还没有分配任何团队。空列表是非无;空名单是一种东西。空列表仍然是一个有效对象,就像一个没有任何水果的果篮仍然是一个果篮一样。如果尚未为映射中的键分配任何列表(空列表或其他列表),则键指向null
,其中null
实际上表示“什么都没有”。我们在这个图中看到,映射中的“division-z”键还没有被分配任何List
对象,所以它没有指向任何对象,null