Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите Как записать число в HashMap?

Тема в разделе "Разработка плагинов для новичков", создана пользователем NulledCoder, 24 сен 2016.

  1. Автор темы
    NulledCoder

    NulledCoder Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    NulledCoder
    Я создаю hashmap ...
    Дальше хочу создать put
    Main.perks.put(p.getName(), "case", число);
    Как сделать чтобы сюда вписывалось число?
     
  2. Хостинг MineCraft
    <
  3. Mr_RoboMan

    Mr_RoboMan Старожил Пользователь

    Баллы:
    123
    В HashMap может хранится только 2 объекта, ключ-значение.
     
  4. andreispas

    andreispas Активный участник Пользователь

    Баллы:
    78
    Skype:
    An.spas98
    Имя в Minecraft:
    cameronh16
    В hashmap хранится 2 параметра[DOUBLEPOST=1474711024,1474710988][/DOUBLEPOST]
    Не успел XD
     
  5. Автор темы
    NulledCoder

    NulledCoder Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    NulledCoder
    Но мне необходимо сделать чтобы с hashmap был
    Ник
    Кейс
    Число (в данном случае) у меня там будут записываться убийства

    Вариант создавать два hashmap или что?
     
  6. gamerforEA

    gamerforEA Старожил Пользователь

    Баллы:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    Код:
    Table<String, String, Integer> perks = HashBasedTable.create();
    perks.put(p.getName(), "case", число);
    Для работы требуется библиотека Google Guava (уже есть в ядре). Если эта библиотека не будет найдена, то нужно подключить её вручную.
     
  7. CoolBoy

    CoolBoy Активный участник Пользователь

    Баллы:
    96
    Skype:
    thecoolboy2070
    Имя в Minecraft:
    CoolBoy
    new HashMap<String, ArrayList<String, Integer>> ();

    Это как вариант.
     
  8. Автор темы
    NulledCoder

    NulledCoder Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    NulledCoder
    Вот ещё вопрос, но это бред наверное.
    Возможно ли сделать переменную индвидидуальную для игрока.

    То есть:
    Петя убил 2 игрока его записало в переменную int
    Вася убил 5 игрока его записало в переменную int

    Или лучше реализовывать с hashmap?
     
  9. gamerforEA

    gamerforEA Старожил Пользователь

    Баллы:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    Нужен HashMap или его аналог.
     
  10. Автор темы
    NulledCoder

    NulledCoder Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    NulledCoder
    Вот и беда не могу понять как с этим работать.[DOUBLEPOST=1474712268,1474712088][/DOUBLEPOST]
    Кстати про эту строку perks.put(p.getName(), "case", 5);
    Когда я буду использовать удаление Main.perks.remove(p.getName()); например
    как мне удалить число из hashmap
     
  11. gamerforEA

    gamerforEA Старожил Пользователь

    Баллы:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    Код:
    Map<String, Integer> kills = new HashMap<>();
    kills.put("Петя", 2);
    kills.put("Вася", 5);
    System.out.println(kills.get("Петя")); // Выведет 2
    System.out.println(kills.get("Вася")); // Выведет 5
    System.out.println(kills.get("Иван")); // Выведет null
     
  12. Автор темы
    NulledCoder

    NulledCoder Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    NulledCoder
    Это понятно, но потом я хочу удалить все значения от пети это сделать?
     
  13. gamerforEA

    gamerforEA Старожил Пользователь

    Баллы:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    В данном случае используется Table, а не HashMap. HashMap для двух элементов, а Table для трёх.
    Удалять так:
    Код:
    perks.remove(p.getName(), "case");
     
  14. Автор темы
    NulledCoder

    NulledCoder Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    NulledCoder
    То есть если я буду вписывать в код это perks.remove(p.getName(), "case"); то он удалит мои цифры + использовать table
     
  15. gamerforEA

    gamerforEA Старожил Пользователь

    Баллы:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    Да, будут удалены числа case для указанного игрока. Если будут храниться и другие числа, то можно сделать так:
    Код:
    Table<String, String, Integer> perks = HashBasedTable.create();
    perks.put("Петя", "case", 1);
    perks.put("Петя", "blocks", 5);
    perks.put("Петя", "kills", 62);
    perks.remove("Петя", "case"); // Это удалит только case
    perks.rowMap().remove("Петя"); // Это удалит и case, и blocks, и kills
     
  16. Автор темы
    NulledCoder

    NulledCoder Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    NulledCoder

    сейчас я хочу получить hashmap get()
    perks.get(p.getName(), "free", 5) - с цифрой он пишет ошибку,
    если так perks.get(p.getName(), "free") - то норм
     
  17. gamerforEA

    gamerforEA Старожил Пользователь

    Баллы:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    Код:
    perks.put(p.getName(), "free", 5);
    perks.put(p.getName(), "free", 10);
    perks.get(p.getName(), "free"); // Вернёт 10
    perks.get(p.getName(), "free", 5); // Ошибка
     
  18. Автор темы
    NulledCoder

    NulledCoder Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    NulledCoder
    Понял спасибо и последний вопрос (не проверял)
    Если я сделаю строку так perks.put(p.getName(), "free", +1); [то он должно с 0 прибавлять по +1) верно?
     
  19. gamerforEA

    gamerforEA Старожил Пользователь

    Баллы:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    Чтобы прибавить, нужно сделать так:
    Код:
    perks.put(p.getName(), "free", 12); // Сейчас записано 12
    
    // Длинный вариант
    int number = perks.get(p.getName(), "free");
    perks.put(p.getName(), "free", number + 1); // Теперь записано 13
    
    // Короткий вариант
    perks.put(p.getName(), "free", perks.get(p.getName(), "free")+ 1); // Теперь записано 14
    
    // Правильный вариант
    Integer number = perks.get(p.getName(), "free");
    perks.put(p.getName(), "free", number == null ? 1 : number + 1); // Теперь записано 15
     
  20. Автор темы
    NulledCoder

    NulledCoder Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    NulledCoder
    И смысл в вариантах? И какой лучше?
     
  21. andreispas

    andreispas Активный участник Пользователь

    Баллы:
    78
    Skype:
    An.spas98
    Имя в Minecraft:
    cameronh16
    Последний вариант проверяет - есть ли такой параметр вообще или я чего то не понимаю?[DOUBLEPOST=1474713881,1474713849][/DOUBLEPOST]
    Последний
     

Поделиться этой страницей