1

我有一个属性列表如下:

  • 钥匙
  • 项目1
  • 项目2
  • 第 3 项

这是一组,我有许多类似的组,例如

1:       2:       3:        ...........
key_1    key_2    key_3     ...........
item1_1  item1_2  item1_3   ...........
item2_1  item2_2  item2_3   ...........
item3_1  item3_2  item3_3   ...........

我需要做一些操作迭代每个。对于性能和空间而言,以下哪一个会更好:

方法1(HashMap)

ArrayList(item1,item2,item3)<br>
HashMap(key , ArrayList)      // For each entry

方法2(模型类数组)

ModelClass
{
key
item1
item2
item3
}[]
ModelClass array 

哪种方法对性能有好处?

4

3 回答 3

2

我不会太担心效率,直到它成为一个问题(或者从一开始就很明显这是一个主要的设计决策)。

我会喜欢一个正确建模的对象(例如你ModelClass上面的)。通过引入一个新对象,您可以正确封装您的属性和迭代这些属性的机制,而不是让集合的集合变得痛苦,并将该结构暴露给迭代过程。您的 ModelClass 可能包含(例如)属性列表,但这是您不必公开的实现决策。

于 2013-02-12T10:38:41.213 回答
1

HashMap。更具可扩展性、可读性和可维护性。

于 2013-02-12T10:37:47.663 回答
1

哪种方法对性能有好处?

这取决于你用它做什么。如果您查找特定的键,则映射将更有效率。如果您总是遍历整个结构,则数组可能会更好地工作(但使用起来更复杂,并且可能仍然不值得额外的痛苦)。

请注意,您也可以使用aMultimap<A, B>而不是 a Map<A, List<B>>

于 2013-02-12T10:49:32.403 回答