gpt4 book ai didi

java - Java ArrayList插入操作的时间复杂度

转载 作者:行者123 更新时间:2023-12-02 02:21:28 30 4
gpt4 key购买 nike

我知道Java中的ArrayList实际上是用数组实现的。因此,向数组中插入一个元素似乎很昂贵,因为我们需要移动索引大于插入位置的所有元素。最坏的情况,即在数组的开头插入,时间复杂度可能是 O(n)?

我正在编写一个性能敏感的程序,并且经常使用插入操作。我不确定这是否会成为瓶颈,如果是的话,我必须找到一些更好的数据结构来做到这一点。

最佳答案

以下是一些基准测试结果(AL 代表ArrayList,LL 代表LinkedList,“edit”表示插入和删除):

Benchmark            (SIZE)  Mode  Samples      Score  Score error  Units

AL_accessFirst 10000 avgt 5 2.945 0.159 ns/op
AL_accessLast 10000 avgt 5 2.964 0.255 ns/op
AL_accessMiddle 10000 avgt 5 2.932 0.114 ns/op
AL_editFirst 10000 avgt 5 1898.086 100.413 ns/op
AL_editLast 10000 avgt 5 20.434 2.096 ns/op
AL_editMiddle 10000 avgt 5 893.348 31.074 ns/op
LL_accessFirst 10000 avgt 5 2.901 0.150 ns/op
LL_accessLast 10000 avgt 5 3.001 0.312 ns/op
LL_accessMiddle 10000 avgt 5 8645.194 358.769 ns/op
LL_editFirst 10000 avgt 5 8.261 0.373 ns/op
LL_editLast 10000 avgt 5 10.703 2.873 ns/op
LL_editMiddleIndx 10000 avgt 5 17075.179 730.738 ns/op
LL_editMiddleIter 10000 avgt 5 8273.984 345.155 ns/op

结果来自这里:https://stuartmarks.wordpress.com/2015/12/18/some-java-list-benchmarks/

关于java - Java ArrayList插入操作的时间复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48434279/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com