2017-07-28 78 views
1

我在Github上经历了许多代码库,几乎在任何地方我都找到了一个使用数组而不是列表的常见模式。Raw数组vs vs集合

例如:

Class Attributes { 
    ... 
    ... 
    Attribute[] attribute; 
    ... 
    ... 
} 

所以在这里我的问题是,为什么这些项目大部分都是使用原始阵列,而不是收藏? 下面的代码仍然是相同的功能明智的,使用数组需要重写大部分代码来处理数组的扩展。

Class Attributes { 
    ... 
    ... 
    List<Attribute> attribute; 
    ... 
    ... 
} 

编辑1:经过大量搜索后,我发现数组的内存占用比集合低。所以现在问题出现了,为什么是这样呢?

那么,显而易见的答案似乎是因为内部他们使用了很多其他变量来维护状态并做了很多其他的事情。 但是这不是必需的,我的意思是如果我们想要存储数字并且数组的大小可以增加或减少,我们就必须实现这些方法。

+0

阵列非常紧凑并且占用内存很小 – Lino

+0

https://stackoverflow.com/a/6105705/2686502 – jayeshsolanki93

+0

什么是“大部分这些项目”?我倾向于指出集合比数组更经常使用。除此之外,你在某种情况下使用任何看起来合适的东西。我们怎么知道为什么使用这个或那个? – Seelenvirtuose

回答

1

我不知道你的来源,但我非常确定集合比数组更经常使用,因为它们提供了一个动态结构。然而,使用数组也有很好的理由。

- 如果你的内存有限,使用数组是更好的选择。

- 如果你的程序有严格的期限,使用数组是更好的选择。

- 如果您知道程序中使用的元素数量,使用数组是更好的选择。简而言之,如果您需要性能,或者资源有限,请使用数组。如果您需要功能,请使用集合。