在课堂内的那一刻,我有了ArrayList,当它们被添加到俱乐部时,对象被存储在其中。我还有一个整数,一旦将对象添加到ArrayList,它将自动递增。但是,我不确定如何在ArrayList中添加注册ID和播放器对象。
答案 0 :(得分:2)
一种解决方案是使用Map
将个人ID与特定玩家相关联,作为键值对,而不是List
:
public class Club
{
private String clubName;
private int registrationID;
private Map<Player, Integer> players;
/**
* Create a club with given club name.
*/
public Club(String clubName)
{
players = new HashMap<Player, Integer>();
this.clubName = clubName;
registrationID = 1;
}
public void registerPlayer(Player p)
{
// check if player is already in the club:
if (!players.containsKey(p)) {
players.put(p, new Integer(registrationID));
// increment ID counter:
registrationID++;
}
}
public void listAll ()
{
for (Player p : players.keySet()) {
System.out.println(p);
}
}
}
答案 1 :(得分:2)
从你的描述中并不完全清楚你到底想要做什么,所以我猜是这样的:
public synchronized void registerPlayer(Player p)
{
p.setRegistrationId(registrationID++);
players.add(p);
}
答案 2 :(得分:0)
尝试创建另一个类:
public class Registration() {
private Player player;
private String registrationId;
public Registration(Player p) {
// Assign p to player
// Generate the registration ID
}
}
然后让ArrayList<Registration> registrations
来容纳所有这些。然后,您的listAll()
方法需要引用i.getNext().getPlayer()
来执行相同的操作。
答案 3 :(得分:0)
我猜猜玩家在将其添加到arraylist后要设置ID的字段?
如果您知道播放器的索引,只需使用get
方法获取对象并设置ID。如果您没有索引,则必须遍历arraylist才能找到您的对象。