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。
有人知道更好的选择吗?提前致谢!
你只需要一个Player
class。每个 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;
我正在为 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。
有人知道更好的选择吗?提前致谢!
你只需要一个Player
class。每个 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;