2012-10-07 45 views
0
public class MapData { 

    ArrayList<String> Redsp = new ArrayList<String>(); 
    ArrayList<String> Bluesp = new ArrayList<String>(); 
    ArrayList<String> Playersp = new ArrayList<String>(); 

    public MapData(ArrayList<String> redsp, ArrayList<String> bluesp, ArrayList<String> playersp) { 
     Redsp = redsp; 
     Bluesp = bluesp; 
     Playersp = playersp; 
    } 
} 

如何創建MapData對象,並向對象中添加/刪除項目? 我想添加6條產品至bluespredsp,20至playerspArrayLists的對象,如何添加/從對象中刪除它們?

MapData TEST = new MapData(null,null,null); 
TEST.?? 

回答

2

我會創造一些方法屬於MapData

例如添加到Bluesp

public void addToBlueSp(String string) { 
    Bluesp.add(string); 
} 

而且我會用駝峯,因爲這是在Java中做標準的事情。

我可能會推薦在ctor內部創建ArrayLists,因爲沒有什麼要點將它們傳遞給對象,然後使用該對象來添加/刪除它們。如果你有ArrayList,你可以將它們添加到這個對象之外。但是,這是一個設計的東西...

+0

我覺得這是對我來說最簡單的方法,但我該如何循環Bluesp?以及如何得到(索引int)? – user1621988

+0

@ user1621988如果你想應用'ArrayList'的所有操作,只需要爲'ArrayList'添加getter方法,然後對它們進行操作就更容易了...... – Baz

+0

你的意思是:public String getBluesp (int index){// Bluesp.get(index)? – user1621988

0

使用add()remove()方法

-你可以選擇創建添加和刪除methods還是讓所有的ArrayList靜態

例如:

public void addToRedSp(String string) { 

    Redsp.add(string); 

} 


public void remToRedSp(String string) { 

    Redsp.remove(string); 

} 

MapData TEST = new MapData(null,null,null); 

    // To add 

    test.addToRedSp("Vivek"); 

    // To remove 

    test.remToRedSp(0); // or MapData.Redsp.remove("Vivek"); 

-ArrayList靜態

public static ArrayList<String> Redsp = new ArrayList<String>(); 
public static ArrayList<String> Bluesp = new ArrayList<String>(); 
public static ArrayList<String> Playersp = new ArrayList<String>(); 



MapData TEST = new MapData(null,null,null); 

// To add 

MapData.Redsp.add("Vivek"); 

// To remove 

MapData.Redsp.remove(0); // or MapData.Redsp.remove("Vivek"); 
0

最簡單的方法是提供了三個集合干將,然後操縱它們普通的方式。這樣的操作將生效的成員字段:

public class MapData { 

    ArrayList<String> Redsp = new ArrayList<String>(); 
    ArrayList<String> Bluesp = new ArrayList<String>(); 
    ArrayList<String> Playersp = new ArrayList<String>(); 

    public MapData(ArrayList<String> redsp, ArrayList<String> bluesp, ArrayList<String> playersp) { 
     Redsp = redsp; 
     Bluesp = bluesp; 
     Playersp = playersp; 
    } 

    public ArrayList<String> getRedsp(); 
} 

然後你做:

MapData TEST = new MapData(null,null,null); 
TEST.getRedsp().add("Text1"); 
TEST.getRedsp().add("Text2"); 

等。

但是,要小心:你不用空列表構造,但用null,我的代碼將觸發NPE。考慮將默認值設置爲空列表。

+0

這違反了dementer的規律,雖然 – RNJ

+1

@MyNameIsTooCommon它只是一個妥協的問題 - 是的,它使你的代碼更緊密耦合,但另一方面,你不需要實現每個成員容器的所有容器訪問方法。 –

0

您可以爲List小號getter和setter方法添加到MapData並加入新的元素是這樣的:

TEST.getRedsp().add("hello"); 

public ArrayList<String> getRedsp() 
{ 
    if(Redsp == null) 
     Redsp = new ArrayList<String>(); 

    return Redsp; 
} 

,或者你可以引入一個add方法對每個列表到MapData

TEST.addToRedsp("hello"); 

wi th

public boolean addToRedsp(String value) 
{ 
    if(Redsp == null) 
     Redsp = new ArrayList<String>(); 

    return Redsp.add(value) 
} 

類似地進行刪除的情況。

順便說一句:看看variable naming conventions