Java ArrayList中的项操作有哪些更快?

Java ArrayList中的项操作有哪些更快?,java,performance,object,arraylist,Java,Performance,Object,Arraylist,我必须替换ArrayList中的一个元素。 使用remove和add或获取所需的项目索引以及使用setint,E哪个更快 如果你知道一些关于类似主题的书,请给我一些建议。如果这是ArrayList的最后一项,几乎没有区别。在其他情况下-setint,E会更快,因为没有nee复制数组的一部分如果这是ArrayList的最后一项,几乎没有区别。在另一种情况下-setint,E将更快,因为无需复制阵列的一部分这一切都在重点矿井中: size、isEmpty、get、set、iterator和listI

我必须替换ArrayList中的一个元素。 使用remove和add或获取所需的项目索引以及使用setint,E哪个更快


如果你知道一些关于类似主题的书,请给我一些建议。

如果这是ArrayList的最后一项,几乎没有区别。在其他情况下-setint,E会更快,因为没有nee复制数组的一部分

如果这是ArrayList的最后一项,几乎没有区别。在另一种情况下-setint,E将更快,因为无需复制阵列的一部分

这一切都在重点矿井中:

size、isEmpty、get、set、iterator和listIterator操作以固定时间运行。添加操作在摊销的固定时间内运行,即添加n个元素需要准时。粗略地说,所有其他操作都在线性时间内运行

重述一下:set=O1,而add/remove=On==>使用set。

所有内容都在重点矿井中:

size、isEmpty、get、set、iterator和listIterator操作以固定时间运行。添加操作在摊销的固定时间内运行,即添加n个元素需要准时。粗略地说,所有其他操作都在线性时间内运行

重述:set=O1,而add/remove=On==>使用set。

removeObject将在ArrayList中执行线性搜索,然后删除指定对象的第一个匹配项,这意味着在最坏的情况下,您将获得一个复杂度

如果您已经知道要替换的索引,那么调用.setindex,object肯定会更快,但如果您不知道,则没有区别,因为在这两种情况下,您都必须执行线性搜索,以获得复杂性

addObject始终将对象添加到ArrayList的末尾,因此在ArrayList中添加单个对象会以O1复杂度运行。

removeObject将在ArrayList中执行线性搜索,然后删除指定对象的第一个匹配项,这意味着在最坏的情况下,您将获得一个ON复杂度

如果您已经知道要替换的索引,那么调用.setindex,object肯定会更快,但如果您不知道,则没有区别,因为在这两种情况下,您都必须执行线性搜索,以获得复杂性


addObject始终将对象添加到ArrayList的末尾,因此在ArrayList中添加单个对象的操作非常复杂。

数组没有这些操作。在arraylist中,集合很可能是最快的,因为除了引用新对象之外,不需要调整大小或节点操作。我想setint,E更好,因为它直接替换元素只是想知道:您做了一些分析,你确定你真的需要担心这些微妙的事情吗?@GhostCat这不是一个微妙的问题。如果你经常这样做,LinkedList会更快地替换元素。但是,查找特定元素的速度很慢。数组没有这些操作。在arraylist中,集合很可能是最快的,因为除了引用新对象之外,不需要调整大小或节点操作。我想setint,E更好,因为它直接替换元素只是想知道:您做了一些分析,你确定你真的需要担心这些微妙的事情吗?@GhostCat这不是一个微妙的问题。如果你经常这样做,LinkedList会更快地替换元素。但是,查找特定元素的速度较慢