Java:使用HashSet创建对象

时间:2017-01-15 15:43:16

标签: java

我试图用Java编写minigame插件。在此插件中,管理员将竞技场创建为新对象。我的问题是我需要在HashSet中存储玩家(名字为Strings)(我个人选择)。我搜索堆栈和谷歌两天仍然无法找到正确的答案。 这是我陷入困境的部分。提出的代码只是为了帮助我弄清楚如何制作它。有没有办法从例如Arena(1)向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 个答案:

答案 0 :(得分: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");

解决方案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);