Java 使用属性列表、HashMap或模态类数组时,哪种方法更有效?

Java 使用属性列表、HashMap或模态类数组时,哪种方法更有效?,java,performance,Java,Performance,我有一个属性列表,如下所示: 钥匙 项目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
  • 项目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
ModelClass
{
key
item1
item2
item3
}[]
ModelClass array 

哪种方法对性能有好处?

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

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

在效率成为一个问题之前(或者从一开始就很明显这是一个重大的设计决策),我不会太担心效率


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

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

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

哪种方法对性能有好处

这取决于你用它做什么。如果您寻找一个特定的密钥,映射将更加有效。如果您总是遍历整个结构,那么数组可能会工作得更好(但使用起来更复杂,可能不值得付出额外的代价)

请注意,您也可以使用而不是
映射

哪种方法对性能有好处

这取决于你用它做什么。如果您寻找一个特定的密钥,映射将更加有效。如果您总是遍历整个结构,那么数组可能会工作得更好(但使用起来更复杂,可能不值得付出额外的代价)

请注意,您也可以使用而不是
映射