ArrayList或Multiple LinkedHashMap

时间:2017-06-21 17:31:46

标签: java arraylist linkedhashmap

我有一个自定义对象A的ArrayList。我需要根据某些条件从A中检索2个变量。我应该每次只使用for loop从列表中检索数据,还是创建2 LinkedHashMap并将所需的变量存储为键/值对,以便以后更快地访问?哪个更有效率?创建2个额外的地图对象是否可以证明搜索过程中的效率?

列表将包含大约100-150个对象,因此两个地图也是如此。 它将由并发用户每天使用。

2 个答案:

答案 0 :(得分:0)

询问“效率”就像问“美”。什么是“效率”?我认为效率是最快的代码,没有错误或其他不当行为。在软件成本方面最有效的是节省程序员时间,以便进行初始开发和维护。在你找到SO上的“答案”的时候,你可以有一个正确的实现编码和正确,并仍然有时间在受控条件下严格测试你的替代品,看看哪些任何差异在程序的操作中。

如果你节省10毫秒的程序运行时间,而代价是过于复杂,过度设计的代码,这些代码充满了错误并且难以重构或修复,那么“有效”吗?

此外,正如所说的那样,这个问题对SO来说毫无用处。您没有从上下文中提供“有效”的定义。您没有提供有关所涉及的结构如何适合您的项目架构,或其使用范围,问题大小或与“效率”的任何定义相关的任何其他内容的信息。

即使你有,我们也没有能力回答这样一个问题,而不是你问一个房间的律师,“我应该起诉他们做了什么吗?”这完全取决于。如果您需要建议,则需要建议,这些建议非常适合您的情况以及开发环境和流程,运行时环境,团队,项目目标,预算和其他相关数据的具体情况。

如果您对运行时“效率”感兴趣,请执行以下操作。通过“有效”准确定义您的意思,包括“如何'有效''足够'有效'的答案?”,并包括衡量这种“效率”的标准。一旦你有了这样一个精确的(不可证明的)定义,然后建立一个严格的测试协议来比较你的上下文中的备选方案,并实际测量“效率”。

在定义“效率”时,请确保您定义的内容很重要。在项目成本或影响非常低的区域中“高效”并且忽略具有巨大成本或影响的区域没有任何区别。

不要指望在这里对你的情况有任何有意义的答案。

答案 1 :(得分:-2)

使用LinkedHashMap,因为它为密钥值对(根据您的要求)做了。因为生产环境中的数据会增加。