【发布时间】:2015-12-20 20:45:54
【问题描述】:
所以我制作了一个hashmap来存储玩家数据,当有人第一次加入时它会执行一个查询,查询结果中的数据会存储在hashmap中。
我想知道是否有一种简化我所做工作的好方法?我正在尝试做的事情是否有更好的选择。我这样做的原因是我不想不断地从 MySQL 数据库中提取数据,因为这样做效率极低且速度很慢。
那么,对于我正在尝试做的事情,有哪些更好、更有效的替代方案。
我的比较器
public class Auth {
core plugin;
private String uuid;
private String name;
private int bits;
private String cult;
private String rank;
private String kit;
private int kills;
private int deaths;
private int blockstraveled;
private int blockbroken;
public Auth(String uuid, String name, int bits, String cult, String rank, String kit, int kills, int deaths, int blockstraveled, int blockbroken) {
super();
this.uuid = uuid;
this.name = name;
this.bits = bits;
this.cult = cult;
this.rank = rank;
this.kit = kit;
this.kills = kills;
this.deaths = deaths;
this.blockstraveled = blockstraveled;
this.blockbroken = blockbroken;
}
public String getPlayerUUID() { return uuid; }
public String getPlayerName() {return name;}
public int getPlayerBits()
{
return bits;
}
public String getPlayerCult() { return cult; }
public String getPlayerRank() { return rank; }
public String getPlayerKit() { return kit; }
//Stats
public int getPlayerKills() { return kills; }
public int getPlayerDeaths() { return deaths; }
public int getPlayerBlocksTraveled() { return blockstraveled; }
public int getPlayerBlocksBroken() { return blockbroken; }
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (!(o instanceof Auth)) {
return false;
}
Auth auth = (Auth) o;
return Objects.equals(uuid, auth.uuid);
}
@Override
public int hashCode() {
return Objects.hash(uuid);
}
@Override
public String toString() {
return "Auth{" +
"uuid='" + uuid + '\'' +
", name='" + name + '\'' +
", bits=" + bits +
", gang='" + cult + '\'' +
", rank='" + rank + '\'' +
'}';
}
我的身份验证管理器类
公共类 authmanager {
core plugin;
//public List<Auth> Auth = new ArrayList<Auth>();
public HashMap<String, Auth> auth = new HashMap<>();
public void saveUser(String uuid, String name, int bits, String cult, String rank, String kit, int kills, int deaths, int blockstraveled, int blocksbroken)
{
this.auth.put(uuid, new Auth(uuid, name, bits, cult, rank, kit, kills, deaths, blockstraveled, blocksbroken));
}
public void saveCult(UUID u, String cult )
{
this.auth.put(u.toString(), new Auth(
auth.get(u.toString()).getPlayerUUID(),
auth.get(u.toString()).getPlayerName(),
auth.get(u.toString()).getPlayerBits(),
cult,
auth.get(u.toString()).getPlayerRank(),
auth.get(u.toString()).getPlayerKit(),
auth.get(u.toString()).getPlayerKills(),
auth.get(u.toString()).getPlayerDeaths(),
auth.get(u.toString()).getPlayerBlocksTraveled(),
auth.get(u.toString()).getPlayerBlocksBroken()));
}
public void saveRank(UUID u, String rank )
{
this.auth.put(u.toString(), new Auth(
auth.get(u.toString()).getPlayerUUID(),
auth.get(u.toString()).getPlayerName(),
auth.get(u.toString()).getPlayerBits(),
auth.get(u.toString()).getPlayerCult(),
rank,
auth.get(u.toString()).getPlayerKit(),
auth.get(u.toString()).getPlayerKills(),
auth.get(u.toString()).getPlayerDeaths(),
auth.get(u.toString()).getPlayerBlocksTraveled(),
auth.get(u.toString()).getPlayerBlocksBroken()));
}
public void saveBits(UUID u, int bits )
{
this.auth.put(u.toString(), new Auth(
auth.get(u.toString()).getPlayerUUID(),
auth.get(u.toString()).getPlayerName(),
auth.get(u.toString()).getPlayerBits() + bits,
auth.get(u.toString()).getPlayerCult(),
auth.get(u.toString()).getPlayerRank(),
auth.get(u.toString()).getPlayerKit(),
auth.get(u.toString()).getPlayerKills(),
auth.get(u.toString()).getPlayerDeaths(),
auth.get(u.toString()).getPlayerBlocksTraveled(),
auth.get(u.toString()).getPlayerBlocksBroken()));
}
public void saveKit(UUID u, String kit )
{
this.auth.put(u.toString(), new Auth(
auth.get(u.toString()).getPlayerUUID(),
auth.get(u.toString()).getPlayerName(),
auth.get(u.toString()).getPlayerBits(),
auth.get(u.toString()).getPlayerCult(),
auth.get(u.toString()).getPlayerRank(),
kit,
auth.get(u.toString()).getPlayerKills(),
auth.get(u.toString()).getPlayerDeaths(),
auth.get(u.toString()).getPlayerBlocksTraveled(),
auth.get(u.toString()).getPlayerBlocksBroken()));
}
public void saveKills(UUID u, int kills )
{
this.auth.put(u.toString(), new Auth(
auth.get(u.toString()).getPlayerUUID(),
auth.get(u.toString()).getPlayerName(),
auth.get(u.toString()).getPlayerBits(),
auth.get(u.toString()).getPlayerCult(),
auth.get(u.toString()).getPlayerRank(),
auth.get(u.toString()).getPlayerKit(),
auth.get(u.toString()).getPlayerKills() + kills,
auth.get(u.toString()).getPlayerDeaths(),
auth.get(u.toString()).getPlayerBlocksTraveled(),
auth.get(u.toString()).getPlayerBlocksBroken()));
}
public void saveDeaths(UUID u, int deaths )
{
this.auth.put(u.toString(), new Auth(
auth.get(u.toString()).getPlayerUUID(),
auth.get(u.toString()).getPlayerName(),
auth.get(u.toString()).getPlayerBits(),
auth.get(u.toString()).getPlayerCult(),
auth.get(u.toString()).getPlayerRank(),
auth.get(u.toString()).getPlayerKit(),
auth.get(u.toString()).getPlayerKills(),
auth.get(u.toString()).getPlayerDeaths() + deaths,
auth.get(u.toString()).getPlayerBlocksTraveled(),
auth.get(u.toString()).getPlayerBlocksBroken()));
}
public void saveBlocksTraveled(UUID u, int blockstraveled )
{
this.auth.put(u.toString(), new Auth(
auth.get(u.toString()).getPlayerUUID(),
auth.get(u.toString()).getPlayerName(),
auth.get(u.toString()).getPlayerBits(),
auth.get(u.toString()).getPlayerCult(),
auth.get(u.toString()).getPlayerRank(),
auth.get(u.toString()).getPlayerKit(),
auth.get(u.toString()).getPlayerKills(),
auth.get(u.toString()).getPlayerDeaths(),
auth.get(u.toString()).getPlayerBlocksTraveled() + blockstraveled,
auth.get(u.toString()).getPlayerBlocksBroken()));
}
public void saveBlocksBroken(UUID u, int blocksbroken )
{
this.auth.put(u.toString(), new Auth(
auth.get(u.toString()).getPlayerUUID(),
auth.get(u.toString()).getPlayerName(),
auth.get(u.toString()).getPlayerBits(),
auth.get(u.toString()).getPlayerCult(),
auth.get(u.toString()).getPlayerRank(),
auth.get(u.toString()).getPlayerKit(),
auth.get(u.toString()).getPlayerKills(),
auth.get(u.toString()).getPlayerDeaths(),
auth.get(u.toString()).getPlayerBlocksTraveled(),
auth.get(u.toString()).getPlayerBlocksBroken() + blocksbroken));
}
}
【问题讨论】:
-
堆栈溢出不是代码审查网站