2017-01-15 3 views
0

Я пытаюсь написать плагин minigame в Java. В этом плагине администратор создает arenas как новые объекты. Моя проблема в том, что мне нужно хранить игроков (имена как строки) в HashSet (мой личный выбор). Я искал стек и Google в течение двух дней и до сих пор не могу найти правильный ответ. Вот часть, где я застрял. Представленный код делается только для того, чтобы помочь мне понять, как это сделать. Есть ли способ добавить что-то к HashSet из, например, Arena (1)? Наверное, я не могу этого сделать, но мне действительно нужна помощь в решении этой проблемы.Java: Создание объектов с помощью HashSet

Арена Класс:

package test; 

import java.util.HashSet; 

public class Arena { 

    private HashSet<String> online; 
    private int id; 

    public Arena(int arenaID){ 
     online = new HashSet<String>(); 
     this.id = arenaID; 
    } 

    public HashSet<String> getHashSet(){ 
     return online; 
    } 

    public int getArenaId() { 
     return id; 
    } 

    @Override 
    public String toString() { 
     return "Arena [online=" + online + ", id=" + id + "]"; 
    } 

} 

Основной класс

package test; 

import java.util.HashMap; 

public class Main { 

    public static void main(String[] args){ 
     HashMap<String, Object> arenas = new HashMap<String, Object>(); 
     arenas.put("1", new Arena(1)); 
     arenas.put("2", new Arena(2)); 

     //arena 1 
     System.out.println(arenas.get(1)); 
     //arena 2 
     System.out.println(arenas.get(2)); 
    } 
} 
+1

Ваша карта содержит строковые ключи; вы запрашиваете значения, связанные с клавишами «Целое». Попробуйте 'get (" 1 ")' вместо 'get (1)'. –

+0

Извините, но я не совсем понимаю, какова ваша проблема. –

+0

Моя проблема в том, что мне нужно как-то поместить значения String внутри HashSet, созданные в объекте. Я не знаю, правильно ли я думаю, но если я создам HashSet в объекте арены, то у каждого нового объекта арены разные HashSet, или я не могу так сделать? – men8

ответ

0

Решение I:

Я хотел бы добавить еще один метод Arena:

public void addToHashSet(String element){ 
    this.online.add(element); 
} 

, а затем:

((Arena) arenas.get("1")).addToHashSet("something new"); 

или объявить

HashMap<String, Arena> arenas = new HashMap<String, Arena>(); 

и без литья:

arenas.get("1").addToHashSet("something new"); 

Solution II:

Добавить другой метод Arena:

public HashSet<String> setHashSet(HashSet<String> hashSet){ 
     this.online = hashSet; 
} 

и использовать его:

HashSet<String> forOnline = new HashSet<String>(); 
forOnline.add(something new); 

(Arena) arenas.get("1").setHashSet(forOnline); 
+0

Решение Я решил свою проблему: D Dziękuję – men8

+0

Добро пожаловать. –

Смежные вопросы