Java 性能-数据量-ArrayList<;字符串>;,列表<;对象>;vs LinkedList<;字符串>;,LinkedList<;对象>;

Java 性能-数据量-ArrayList<;字符串>;,列表<;对象>;vs LinkedList<;字符串>;,LinkedList<;对象>;,java,performance,arraylist,linked-list,Java,Performance,Arraylist,Linked List,在我部署在tomcat上的java应用程序中,大约有500K个项目(甚至可以向上)是 添加到ArrayList。 然后,对这些列表进行迭代以检查某些条件 对于这种情况,使用LinkedList会提高性能吗 任何来自实践经验的指针,数据量超过200000项~1000000项 主要是字符串和具有多个属性(主要是字符串)的对象的列表 (基本上是从数据库获取数据,将其转换为Java对象并通过HTTP发送) 如果数据大小预计保持在100K或以下,是否会有差异参见此问题: LinkedList允许使用 迭

在我部署在tomcat上的java应用程序中,大约有500K个项目(甚至可以向上)是 添加到ArrayList。 然后,对这些列表进行迭代以检查某些条件

对于这种情况,使用LinkedList会提高性能吗

任何来自实践经验的指针,数据量超过200000项~1000000项

主要是字符串和具有多个属性(主要是字符串)的对象的列表 (基本上是从数据库获取数据,将其转换为Java对象并通过HTTP发送) 如果数据大小预计保持在100K或以下,是否会有差异参见此问题:

LinkedList允许使用 迭代器,但只能对元素进行顺序访问。换句话说,你 可以向前或向后浏览列表,但在 列表所需的时间与列表的大小成比例

另一方面,ArrayList允许快速随机读取访问,因此 可以在固定时间内抓取任何元素。但从中添加或删除 除了目的之外,任何地方都需要将后一种元素转移, 要么开个口,要么填补缺口。另外,如果您添加更多 元素的容量大于基础数组的容量,新数组(1.5 乘以大小),并将旧阵列复制到新阵列 因此,在最坏的情况下,添加到ArrayList是O(n),但为常数 平均来说


你的问题不清楚:你问的是列表(它是一个接口)和LinkedList(它是一个实现)之间的区别。简言之:
ArrayList
上的常量因子非常好,以至于
LinkedList
几乎从来都不是正确的答案。谢谢Louis。在发布我的问题之前,我确实仔细研究了其他问题。我不确定是否有人就我感兴趣的数据量分享了关于实际生产数据的经验,因此我提出了这个问题。我猜你不喜欢它,决定投反对票!如果这完全没有用,我可以结束这个问题。@Filip-更新了这个问题以提及ArrayList谢谢你的回答。我在寻找一些实际经验,估计添加/检索我提到的数据量所需的时间。我确实在代码中估算了arraylist,但在更新代码、重新测试所有内容之前,我想过问这个问题。对于与此主题相关的其他问题的答案,有人提到如果不删除/修改列表,linkedlist可以更快。这让我吃惊!