Java 如何从HashMap获取玩家列表

Java 如何从HashMap获取玩家列表,java,dictionary,hashmap,Java,Dictionary,Hashmap,我为Java初学者找到了一个任务。这是一个我必须实现的接口。 我决定对玩家使用HashMap,但现在我注意到我必须返回一个玩家数组,对吗? 请您帮助我理解如何在getAllPlayer()方法中实现这一点,好吗? 多谢各位 public class LeagueManager implements Manager{ Map<String, Player> players = new HashMap<String, Player>(); public void addPla

我为Java初学者找到了一个任务。这是一个我必须实现的接口。 我决定对玩家使用HashMap,但现在我注意到我必须返回一个玩家数组,对吗? 请您帮助我理解如何在getAllPlayer()方法中实现这一点,好吗? 多谢各位

public class LeagueManager implements Manager{
Map<String, Player> players = new HashMap<String, Player>();
public void addPlayer(Player player) {
    players.put(player.getNick(), player);
}

public void removePlayer(Player player) {
    if (!players.isEmpty()) {
        players.remove(player.getNick());
    }
}

public Player getPlayer(String name) {
    if (!players.isEmpty() && players.containsKey(name)) {
        return (Player) players.get(name);
    } else {
        System.out.println("Error: there is no player with nick " + name);
        return null;
    }
}

public Player[] getAllPlayers() {
    if (!players.isEmpty()) {
        return null;
    } else {
        return null;
    }
}


public void addPoints (String name, int points) {
    if (players.containsKey(name)) {
        Player pl = (Player) players.get(name);
        pl.setPoints(points);
    }
}}
公共类LeagueManager实现管理器{
Map players=newhashmap();
公共无效添加玩家(玩家){
player.put(player.getNick(),player);
}
public void removePlayer(玩家){
如果(!players.isEmpty()){
移除(player.getNick());
}
}
公共播放器getPlayer(字符串名称){
如果(!players.isEmpty()&&players.containsKey(名称)){
返回(玩家)玩家。获取(姓名);
}否则{
System.out.println(“错误:没有带尼克的玩家”+名字);
返回null;
}
}
公共播放器[]GetAllPlayer(){
如果(!players.isEmpty()){
返回null;
}否则{
返回null;
}
}
public void addPoints(字符串名称,int points){
if(玩家姓名){
Player pl=(Player)players.get(name);
pl.设定点(点);
}
}}
您可以使用players.values().toArray以数组形式获取值

public Player[] getAllPlayers() {
    Player[] result = new Player[players.size()];
    return players.values().toArray(result);
}
使用以下命令:

public class LeagueManager {
    Map<String, Player> players = new HashMap<String, Player>();
    public void addPlayer(Player player) {
        players.put(player.getNick(), player);
    }

    public void removePlayer(Player player) {
        if (!players.isEmpty()) {
            players.remove(player.getNick());
        }
    }

    public Player getPlayer(String name) {
        if (!players.isEmpty() && players.containsKey(name)) {
            return (Player) players.get(name);
        } else {
            System.out.println("Error: there is no player with nick " + name);
            return null;
        }
    }

    public Player[] getAllPlayers() {
        if (!players.isEmpty()) {
            return players.values().toArray(new Player[players.size()]);
        } else {
            return null;
        }
    }

    public void addPoints (String name, int points) {
        if (players.containsKey(name)) {
            Player pl = (Player) players.get(name);
            pl.setPoints(points);
        }
    }
}
public class联赛经理{
Map players=newhashmap();
公共无效添加玩家(玩家){
player.put(player.getNick(),player);
}
public void removePlayer(玩家){
如果(!players.isEmpty()){
移除(player.getNick());
}
}
公共播放器getPlayer(字符串名称){
如果(!players.isEmpty()&&players.containsKey(名称)){
返回(玩家)玩家。获取(姓名);
}否则{
System.out.println(“错误:没有带尼克的玩家”+名字);
返回null;
}
}
公共播放器[]GetAllPlayer(){
如果(!players.isEmpty()){
返回players.values().toArray(新玩家[players.size()]);
}否则{
返回null;
}
}
public void addPoints(字符串名称,int points){
if(玩家姓名){
Player pl=(Player)players.get(name);
pl.设定点(点);
}
}
}

它返回一个与hashMap大小相关的播放器数组。

replicate of您不需要在调用remove(…)或containsKey(…)或get(…)之前检查集合是否为空。在null不是相关值的映射上,调用containsKey(…)然后调用get(…)也是一种资源浪费,您只需获取(…)并检查结果是否不是null。