相关疑难解决方法(0)

何时在Java中使用LinkedList而不是ArrayList?

我一直只是一个人使用:

List<String> names = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)

我使用接口作为可移植性的类型名称,因此当我问这些问题时,我可以重新编写代码.

何时应该LinkedList使用,ArrayList反之亦然?

java collections linked-list arraylist

2974
推荐指数
27
解决办法
102万
查看次数

数组与链表

为什么有人想在阵列上使用链表?

毫无疑问,对链接列表进行编码比使用数组要多一些工作,人们可能想知道什么是合理的额外工作.

我认为在链表中插入新元素是微不足道的,但它是数组中的一项重要工作.使用链表存储一组数据与将其存储在数组中是否还有其他优点?

这个问题不是一个重复这个问题,因为其他的问题是关于一个特定的Java类专门询问,而这个问题的关注与一般的数据结构.

language-agnostic arrays linked-list data-structures

192
推荐指数
19
解决办法
22万
查看次数

如果在列表中间插入,LinkedList是否真的比ArrayList快?

- LinkedList和之间有什么区别ArrayList?什么时候最好使用LinkedList

我认为每个Java开发人员至少在面试时都听过一次这个问题.

- 如果您希望能够在列表中间插入项目,则最好使用链接列表.

这是这个问题的常见答案.大家都知道.每当你问一个关于List实现之间差异的问题时,你会得到如下答案:

我什么时候应该使用LinkedList?什么时候需要在元素之间或开始时有效删除?

从这里

忘了提到插入费用.在LinkedList中,一旦你有正确的位置,插入成本O(1),而在ArrayList中它会上升到O(n)- 必须移动经过插入点的所有元素.

从这里

当您希望能够在列表中间插入项目(例如优先级队列)时,链接列表优于数组.

从这里

ArrayList较慢,因为它需要复制部分数组才能删除已经空闲的插槽.LinkedList只需要操作几个引用.

从这里

和更多...

但你有没有试过自己重现它?我昨天试过并得到了这些结果:

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

public class Test {
    public static void main(String... args) {
        final int MAX_VAL = 10000;
        List<Integer> linkedList = new LinkedList<Integer>();
        List<Integer> arrayList = new ArrayList<Integer>();
        for(int i = 0; i < MAX_VAL; i++) {
            linkedList.add(i);
            arrayList.add(i);
        }
        long time = System.nanoTime();
        for(int i = 0; i < MAX_VAL; …
Run Code Online (Sandbox Code Playgroud)

java collections

18
推荐指数
2
解决办法
9192
查看次数

可以快速调整大小的数组

我正在寻找一种可以轻松添加项目的数组数据类型,而不会影响性能.

  • 系统.数组 - 将Redim Preserve整个RAM从旧复制到新,与现有元素的数量一样慢
  • System.Collections中.ArrayList - 够用吗?
  • System.Collections中.IList - 够好吗?

c# arrays performance resize arraylist

15
推荐指数
2
解决办法
2万
查看次数

为什么链表比数组更快?

我对此非常困惑.到处都写着"链表比数组更快",但是没有人愿意说出为什么.使用普通逻辑我无法理解链表如何更快.在一个数组中,所有单元格彼此相邻,因此只要您知道每个单元格的大小,就可以立即轻松到达一个单元格.例如,如果有一个包含10个整数的列表,并且我想在第四个单元格中获取该值,那么我直接进入数组的开头+24个字节并从那里读取8个字节.

另一方面,如果你有一个链表并且你想要获得第四个元素,那么你必须从列表的开头或结尾开始(取决于它是单个列表还是双列表)并从一个节点开始到另一个,直到找到你想要的东西.

那么heck如何逐步进行比直接进入元素要快?

arrays performance linked-list

11
推荐指数
5
解决办法
3万
查看次数

arraylist和linkedList之间的区别

可能重复:
何时使用LinkedList <> over ArrayList <>?
何时在数组/数组列表中使用链表?

我何时应该使用arrayList?何时应该使用LinkedList?

什么时候应该使用TreeSet,LinkedHashSetHashSet

java collections linked-list arraylist

11
推荐指数
1
解决办法
2万
查看次数

链表仍然相关吗?

我看到这篇文章:你应该使用 Linked List 吗?它指出,鉴于可用内存和 RAM 结构的技术进步,使用数组会比链表更好。

还有一个老问题何时在数组/数组列表上使用链表?

文章中的论点真的成立并且链接列表已经过时吗?或者如果论点为真,使用链接列表仍然比数组更好的场景是什么?(用例子解释任何一点都会有帮助)

c linked-list data-structures

2
推荐指数
1
解决办法
2981
查看次数

当只有一个元素变得复杂时,为什么Matlab会创建虚部?

K>> asdfasdf=[1 1 1]

asdfasdf =
 1     1     1

K>> asdfasdf(4)=-2.3604 + 0.1536i

asdfasdf =
1.0000 + 0.0000i   1.0000 + 0.0000i   1.0000 + 0.0000i  -2.3604 + 0.1536i
Run Code Online (Sandbox Code Playgroud)

为什么前3个元素突然变得复杂?我怎样才能防止Matlab这样做呢?真实是真的.这不应该只是因为另一个元素是想象的而改变为想象的.

matlab complex-numbers

2
推荐指数
1
解决办法
169
查看次数

链表和结构数组之间的区别?

这些代码有什么区别?

1)

struct MyStruct
{
    int num;
} ms[2];

ms[0].num = 5;
ms[1].num = 15;
Run Code Online (Sandbox Code Playgroud)

2)

struct MyStruct
{
    int num;
    MyStruct *next;
};

MyStruct *ms = new MyStruct;
ms->num = 5;
ms->next = new MyStruct;
ms->next->num = 15;
Run Code Online (Sandbox Code Playgroud)

一般来说,我可能对链表和列表有点困惑,它们对某些特定的东西有用吗?请给我多解释一下。

c++ data-structures

1
推荐指数
1
解决办法
3817
查看次数

Javascript数组比C++中的数组效率低

我正在读一本关于JS数据结构的书,它提到:

javascript中的数组被实现为对象,导致它们比使用其他语言(如C++和Java)构建的数组效率低.

为什么?

javascript arrays

1
推荐指数
1
解决办法
579
查看次数

使用链接列表或数组进行垄断?

我正在为一个用C++编写的学校项目制作一个Monopoly游戏.我正在做的第一件事是实现董事会.对我来说直观的是,每个tile都是一个包含信息和函数以及诸如此类的东西,但我无法确定这些是否应该包含在链表或数组中.

这对链接列表是有意义的,因为我可以简单地将最后一个tile指向第一个,但是使用数组似乎也更有效,因为我可以立即访问Tile [5].

任何人都可以澄清哪个更适合这个目的?

c++ arrays oop linked-list

0
推荐指数
1
解决办法
573
查看次数

如果像这样的动态数据结构是可能的,为什么我们需要一个链表?

如果我们拥有std::set并且std::vector可以动态增长和缩小,为什么我们需要链表?

NB我真的不明白,为什么会有这么多的选票.唐氏选民,请留下评论.

c++ arrays linked-list dynamic data-structures

-3
推荐指数
4
解决办法
565
查看次数