当前位置: 首页 > 面试题库 >

添加元素时,java linkinglist比arraylist慢?

瞿博学
2023-03-14
问题内容

我以为链表在添加元素时应该比数组表快?我只是测试了添加,排序和搜索元素(数组列表,链表,哈希集)需要多长时间。我只是对数组列表和链接列表使用java.util类…使用每个类都可以使用的两个add(object)方法

arraylist在填充列表中执行链表…并在列表中进行线性搜索。

这是正确的吗?我在执行中做错了吗?

*_ __ _ _ __ _编辑 __ * __ __ *

*

我只想确保我正确使用了这些东西。这是我在做什么:

public class LinkedListTest {

    private List<String> Names;

    public LinkedListTest(){
            Names = new LinkedList<String>();
    }

然后,我只使用链表方法,即“ Names.add(strings)”。当我测试数组列表时,几乎是相同的:

public class ArrayListTest {

    private List<String> Names;

    public ArrayListTest(){
            Names = new ArrayList<String>();
    }

我做对了吗?


问题答案:

是的,这是对的。LinkedList将必须在每次插入时进行一次内存分配,同时ArrayList允许执行更少的分配,从而将其摊销为O(1)插入。内存分配看起来很便宜,但实际上可能非常昂贵。

LinkedList由于参考位置的限制,线性搜索时间可能会变慢:ArrayList元素之间的距离更近,因此缓存未命中的次数更少。

当您计划仅在a的末尾插入时ListArrayList是执行的选择。



 类似资料:
  • 我正在尝试使用以下方法将元素添加到名为activList的ArrayList中: 但是我在运行代码时在这一行得到了一个NullPointerExcema: 我确实读过这一页:什么是NullPointerException,如何修复它?(请不要重复报告) 我所理解的是,我得到错误是因为我的ArrayList没有任何元素。但是,我尝试在创建后立即添加一个,如下所示: 但我得到了一个错误:“意外标记:(

  • 问题内容: 我有这个android代码,它从服务器中获取一个JSON并从该JSON填充一个ArrayList,我在onresponse空隙内检查了ArrayList“ meals”的大小,它给了我1,但是当我在StringRequest对象后对其进行检查时,我得到了0个项目。进餐在全局范围内定义,并在oncreateview函数内部进行初始化代码: 问题答案: 这里的问题是关于了解任务如何工作的。

  • 我需要在队列中添加元素,但当我调用函数添加元素时,我希望它在数组的开头添加元素(因此它的索引最低),如果数组有10个元素,添加一个新元素将导致删除最旧的元素(索引最高的元素)。 有人有什么建议吗?

  • 问题内容: 首先,对无法提供任何源代码表示歉意。我的项目很大,将所有内容链接起来都是不切实际的,而且我还无法缩小非常烦人的问题。我将尽力在这里进行解释。 我在代码的每个循环中动态创建类的新实例。在循环中会为该实例动态地提供几个属性,例如’name’。在每个循环的最后,新生成的实例将添加到另一个第3类中保存的ArrayList中。 但是,问题在于,无论出于何种原因添加新元素时,所有先前的元素都会更改

  • 问题内容: 下面有一个for循环代码。我通过调用一个自定义显示函数发现aBook arrayList对象仅添加了最后一个类对象三次。为什么会这样呢? 这是我的LiFiAddressBook类 } 问题答案: 由于使用static关键字,每次 调用构造函数时,旧值都会被新值覆盖,并且在打印列表中的元素时,LiFiAddressBook类的对象变量将指向相同的对象。因此打印相似的对象。 需要明确的是,