2012-07-10 71 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