带bukkit的Java哈希映射

带bukkit的Java哈希映射,java,hashmap,bukkit,Java,Hashmap,Bukkit,以及如何在bukkit中使用 myItem.addEnchantments( Enchantment.KNOCKBACK, 1 /* TODO Here goes 2nd enchantment */ ); “Addancements”接受“AddancementsMap”您宁愿使用Addancement两次或更多次: myItem.addEnchantment(Enchantment.KNOCKBACK, 1); myItem.addEnchantment(Enchantment.THRON

以及如何在bukkit中使用

myItem.addEnchantments( Enchantment.KNOCKBACK, 1 /* TODO Here goes 2nd enchantment */ );
“Addancements”接受“AddancementsMap

您宁愿使用Addancement两次或更多次:

myItem.addEnchantment(Enchantment.KNOCKBACK, 1);
myItem.addEnchantment(Enchantment.THRONS, 2);
如果坚持使用附录,则需要创建地图,填充并传递:

Map<Enhancement, Integer> map = new HashMap<Enhancement, Integer>();
map.put(Enchantment.KNOCKBACK, 1);
map.put(Enchantment.THRONS, 2);

myItem.addEnchantments(map);

在您的情况下,我将使用选项1,John Smith的第二个问题:如何将字符串转换为hashmap 您可以将hashmap转换为字符串,但我知道java没有字符串转换为hashmap。您可以使这样做的函数不可能实现,也可以使两个函数将hashmap转换为string,并将string转换为hashmap。在本例中,您需要一个带有附魔和整数的哈希映射,因此您只需执行以下操作:

public /*static*/ String hashMapToString(HashMap<Enchantment, Integer> hashMap) {
    StringBuilder serializedString = new StringBuilder();
    for (Enchantment enchant : hashMap.keySet()) {
        serializedString.append(enchant.getName() + "<>" + hashMap.get(enchant) + ";");
    }
    return serializedString.toString();
}
然后创建一个函数将其转换回hashmap:

public /*static*/ HashMap<Enchantment, Integer> stringToHashMap(String hashMapString) {
    HashMap<Enchantment, Integer> hashMap = new HashMap<>();
    for (String split : hashMapString.split(";")) {
        String[] splited = split.split("<>");
        hashMap.put(Enchantment.getByName(splited[0]), Integer.valueOf(splited[1]))
    }
    return hashMap;
}

您甚至可以让它们静态删除注释标记,如果您根本不想删除注释标记,只需删除注释标记内的内容即可

您想做什么?立即向HashMap添加两件事,如下所示,非常感谢!顺便问一下,你知道如何把字符串转换成HashMap吗我想在数据库中存储附魔,实际上Java中没有任何内置的东西可以做到这一点,我想我会使用分解字符串进行循环,将其添加到新的HashMap中-我绝对不会建议在整个数据库中存储分割字符串,并在运行时构建HashMap。取而代之的是为玩家数据(即玩家)创建一个表,并为附魔数据创建另一个表,然后您可以使用外键从用于附魔的表的内部引用玩家表上的id或用户名字段。然后,您可以使用玩家id=5的“结界”中的“选择结界id”、“结界级别”查询玩家拥有哪些结界。