Java |数据结构 - 通过字符串存储不同的对象

Java | Data Structures - Storing different object by a String

我正在为 Minecraft Bukkit 编写一个插件,我发现我使用了很多 HashMap。我正在使用玩家的 UUID(作为字符串)来存储他们的数据,我所拥有的看起来像这样:

private static Map<String, Integer> balances;
private static Map<String, String> nicknames;
private static Map<String, List<Achievements>> achievements;
private static Map<String, Rank> ranks;

@Override
public void onEnable() {
    balances = new HashMap<String, Integer>();
    nicknames = new HashMap<String, String>();
    achievements = new HashMap<String, List<Achievement>>();
    ranks = new HashMap<String, Rank>();
}

别担心,我问的问题与 Minecraft Bukkit 无关,所以你不需要了解任何相关知识。我要问的是,是否有更好的数据结构可供我使用?我觉得我使用了太多的 HashMaps。

有人知道更好的选择吗?提前致谢!

你只需要一个Playerclass。每个 Player 个实例都可以保留自己的数据。您可以使用 uuid 作为键将所有玩家保存在哈希图中。

public class Player {
     private String uuid;
     private int balance;
     private String nickName;

     //other fields
}

听起来您应该创建一个用户对象。

class User {
    Integer balance;
    String nickname;
    List<Achievements> achievements;
    Rank rank;
}

private static Map<String, User> users;

您可能希望将值存储在专用 class:

public class PlayerInfo {
    private String userUUID;
    private int balance;
    // ...
}

Map<String, PlayerInfo> playerInfos = // ...

您使用的表格非常相关。您还可以创建一个子类,例如:

public class PlayerData {
    public int balance;
    public String nickname;
    ...
}

然后使用:

private static Map<String, PlayerData> balances;