Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ArrayList或多个LinkedHashMap_Java_Arraylist_Linkedhashmap - Fatal编程技术网

Java ArrayList或多个LinkedHashMap

Java ArrayList或多个LinkedHashMap,java,arraylist,linkedhashmap,Java,Arraylist,Linkedhashmap,我有一个自定义对象a的ArrayList。我需要根据特定条件从a中检索2个变量。我应该简单地使用for loop每次从列表中检索数据,还是创建2个LinkedHashMap并将所需变量作为键/值对存储在其中,以便以后更快地访问?哪个更有效?创建另外两个地图对象是否证明搜索期间的效率合理 该列表将包含大约100-150个对象,这两个贴图也是如此。 它将被并发用户每天使用。使用LinkedHashMap,因为它是为键值对制作的(根据您的要求)。因为数据将在生产环境中增加。询问“效率”就像询问“美”。

我有一个自定义对象a的ArrayList。我需要根据特定条件从a中检索2个变量。我应该简单地使用
for loop
每次从列表中检索数据,还是创建2个
LinkedHashMap
并将所需变量作为键/值对存储在其中,以便以后更快地访问?哪个更有效?创建另外两个地图对象是否证明搜索期间的效率合理

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

使用LinkedHashMap,因为它是为键值对制作的(根据您的要求)。因为数据将在生产环境中增加。

询问“效率”就像询问“美”。什么是“效率”?我认为,效率是使代码在没有bug或其他不当行为的情况下最快被发布的原因。就软件成本而言,最有效的方法是节省程序员的时间,包括初始开发和维护时间。在您找到“答案”的过程中,您本可以编写一个正确的实现,并且仍然有时间在受控条件下严格测试您的备选方案,以查看哪些方案对程序的运行有任何影响

如果你节省了10毫秒的程序运行时间,而代价是极其复杂的、过度设计的代码,这些代码充满了bug,并且很难重构或修复,这是“有效的”吗

此外,按照措辞,这个问题在这方面毫无用处。您没有从上下文中提供“高效”的定义。您没有提供有关所讨论的结构如何适合您的项目架构的信息,或者它们的使用范围,或者问题的大小,或者与任何“效率”定义相关的任何其他信息

即使你有,我们也没有能力回答这样的问题,就像你问满屋子的律师,“我应该为某人的所作所为起诉他们吗?”这一切都要视情况而定。您需要建议,如果您需要建议的话,这非常具体到您的情况以及您的开发环境和流程、您的运行时环境、您的团队、项目目标、预算和其他相关数据的确切情况

如果您对运行时“效率”感兴趣,请执行以下操作。准确定义“效率”的确切含义,包括对“效率”的回答,以及衡量这种“效率”的标准。一旦你有了这样一个精确且(dis)可证明的定义,然后建立一个严格的测试协议来比较你上下文中的替代方案,并实际测量“效率”

在定义“效率”时,请确保您定义的内容很重要。在一个项目成本或影响非常低的领域保持“高效”并没有什么区别,而忽略了一个成本或影响巨大的领域


因此,不要期望对您的情况有任何有意义的回答。

这取决于您这样做的频率以及地图可能有多大。如果它现在能够工作并且速度足够快,我建议你离开它,直到你知道你需要改变它。当面对“做X或Y是否更有效?”的问题时,我发现简单地做基准测试是有帮助的。创建一些模拟数据,将数字增加到数百万,并打印每次测试所需的时间。(假设您已经理解了这两个数据结构的底层结构)“没有区别的区别就是没有区别。”-匿名。“过早优化是万恶之源。”-Donald Knuth。“先把它做好,然后在需要的时候把它做得更快。”-上帝。你能把这个问题再细化一点吗?现在我们知道了数据的大小,那么访问数据的频率,数据是否需要并发,情况如何(这可能会让我们知道如何更有效地为对象编制索引)。我发现,当需要针对特定情况进行优化时,很难给出一个综合解决方案。@Kylon Tyner:我试过测试,结果表明,除非数据超过2500个对象,否则性能差异可以忽略不计。所以我现在选择ArrayList。你怎么知道这有用呢,@Abishek Kumar Jain?“正派家伙”的数据在其生产环境中会增加多少,您如何知道?为什么
LinkedHashMap
而不是
HashMap
?这对OP的代码有多大的影响?他们要花多少钱来实施你的情况?你不知道这些,但你却假设这是一个绝对的、普遍的、永远正确的答案。没有通过。@LewBloch他需要一对键值,他还要求从LinkedHashMap和list中进行选择。这意味着他需要在map中插入order Maintenance,这就是我建议LinkedHashMap的原因。可以吗。