2017-01-15 52 views
0

我正在嘗試在Java中編寫minigame插件。在這個插件管理員創建阿拉納斯作爲新的對象。我的問題是我需要在HashSet中存儲玩家(名稱爲Strings)(我個人選擇)。我搜索堆棧和谷歌兩天,仍然無法找到正確的答案。 這裏是我卡住的部分。提出的代碼僅用於幫助我確定如何製作代碼。有沒有辦法從例如Arena(1)添加一些東西給HashSet?也許我不能這樣做,但我真的需要幫助解決這個問題。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

您的地圖包含字符串鍵;您正在詢問與「Integer」鍵相關的值。嘗試'get(「1」)'而不是'get(1)'。 –

+0

對不起,但我不清楚你的問題是什麼。 –

+0

我的問題是,我需要以某種方式將字符串值放入對象中創建的HashSet中。我不知道我是否正確思考,但如果我在競技場對象中創建HashSet,那麼每個新的競技場對象都有不同的HashSet,或者我不能這樣做? – men8

回答

0

解決方案一:

我想補充另一種方法來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:

添加另一種方法來競技場:

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

解決方案我解決了我的問題:DDziękuję – men8

+0

不客氣。 –