数组与java Collection框架中的任何集合之间的差异?

Adr*_* Be 14 java arrays collections

正如标题所说,我正在研究"数组与java Collection框架中的任何集合之间的差异".

认为它的高水平足以为我们中的一些(或许多)提供一些很好的理解,他们对此知之甚少或需要思考太长时间才能得出一个有趣的答案

到目前为止,我想出了:

  1. 集合框架类要么使用下面的数组,要么使用更复杂的数据结构.当一个数组只是......一个数组
  2. Array没有方法(没有API),例如Collection类提供的方法.

如果这些是不正确的假设,请纠正我,当然还要添加你自己的答案

Boh*_*ian 31

它们实际上是未发布的,只是说它们都存储了一组价值观.

从功能的角度来看,虽然两者都可以存储对象的引用:

  • 数组可以存储基元
  • 集合不能存储基元(尽管它们可以存储基元包装类,例如Integer等)

一个重要的区别,通常不是新手java程序员所理解的,是可用性和便利性之一,特别是考虑到Collections在需要时自动扩展大小:

  • 数组 - 除非必须,否则请避免使用它们
  • 集合 - 优先于数组使用它们

数组最终是在一个对象中存储一组基元/引用的唯一方法,但它们是最基本的选项.虽然数组可能会给你一些速度优势,但除非你需要超快代码,否则首选集合是因为​​它们有很多便利.

  • 为什么选择downvote?这怎么"没用"(这是一个downvote的意思) (5认同)
  • @kapep是的 - 当我重新阅读我的回答时,我也注意到了.你的评论使我感到羞愧,编辑澄清:) (2认同)
  • 我说可以的话就使用数组,否则就使用集合。只要您不需要数组列表的添加和删除操作,数组速度更快,空间效率更高。 (2认同)
  • @jedyobidan我同意你的观点,但是有两点很重要:要知道何时考虑使用数组:你必须知道数组有多大(并不总是可能),并且集合仍然非常快(你必须以纳秒为单位进行测量看到不同) (2认同)

小智 11

Array和Collection之间有5个不同之处,如下所示:

  1. 数组的大小是固定的,而某些集合本质上是可生长的.

  2. 数组存储同类数据.集合存储同构数据和异构数据.

  3. 在数组中,没有下划线数据结构,而集合具有下划线数据结构.

  4. 建议使用数组表示性能,而不使用集合.

  5. 与集合相比,数组使用更多的内存空间.

  • “数组使用更多内存空间”——为什么? (3认同)