2012-07-10 72 views
0

我不確定這是否是一個正確的問題,但我會嘗試它。如何創建項目的屬性列表? LinkedList,ArrayList,文件?

我想模擬一個生產系統,其中幾個部分進入一個系統,在不同的機器上運行。我試圖讓事情simples,但待着,我需要建立某種形式的名單,讓我索引屬性和價值的「物體」,例如:

Machine [num][type][avg_time][posx][posy][state] 
Part [num][type][order][state] 

,這樣我可以創建某種名單這將讓我在任何給定的時間檢索屬性,例如:

Machine [1][a][19][100][100][busy] 

and Machine[posx] would retrieve the saved value for it 

我還在進一步閱讀的ArrayList,LinkedLists等,但似乎無法找出最好的方法去做這個。做這件事的最好方法是什麼,所以我可以進一步閱讀這個主題?

+3

您可以創建'Machine'和'Part'班,您已經描述過的屬性。 – 2012-07-10 17:34:15

回答

1

EnumsHashMap可以讓你這樣做:

public enum Properties { 
POSX, POSY, ... 
} 

Map<Properties, Value> machine = new HashMap<Properties, Value>(); 

要設置值....

machine.put(Properties.POSX, 151); //if Value is of Integer class, perhaps 

,並檢索值...

machine.get(Properties.POSX) 
+0

非常感謝,我會更詳細地看看這些! 但是,我讀的地方,枚舉常量隱式靜態和最終,不能改變一旦創建!因爲我將有一個界面,其中Machine和Part的參數(在這種情況下)在每次運行中都會不同,這不會是一個問題,還是我解釋這個錯誤? – 2012-07-10 19:37:43

1

上面提到的問題指向的收集知道爲地圖

從下面選擇一個,你會發現更適合你的問題。

1.如果您希望屬性爲排序順序使用TreeMap。

2.如果你想在地圖中最快,然後去HashMap中。

3.如果您希望地圖是線程安全,然後去哈希表。

4.對於線程安全的,你也可以使用一個ConcurrentHashMap,從java.util.concurrent中 包。

如:

HashMap<Properties, Value> myMachine = new HashMap<Properties, Value>(); 
+0

非常感謝,我會詳細瞭解那些最適合我的東西! – 2012-07-10 19:34:47

+0

我發現Treemap和Hash都有用!現在,我將使用Treemaps,我相信它適合我的需求! 一個小問題,是否可以使用一個類來將所有值分配給地圖,然後在另一個類中使用它們? – 2012-07-10 21:25:53

+0

雅有可能......請記住軟件工程的這個原理......「一個班級應該只做一件事,所以它只會有一個改變的原因。」' – 2012-07-11 04:18:38