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

数组的好处

邢勇
2023-03-14
问题内容

如我所见,列表相对于数组的优势非常明显:

  • 泛型提供了更精确的输入:List<Integer>, List<? extends Number>, List<? super Integer>
  • 甲List接口有一堆有用的方法:addAllremove等等。虽然对阵列除了获取/设置所有标准操作必须在过程中的方式通过将它传递给一个静态方法进行。
  • 集合提供了,,不可修改和同步列表之类的不同实现ArrayListLinkedList可以将其隐藏在通用的List接口下。
  • OOB长度控制。

作为缺点,我只能提到缺少语法糖和运行时类型检查。同时,对两种结构的支持都需要频繁使用asListtoArray方法,这会使代码的可读性降低。所以我很好奇我错过的使用数组是否有重要的好处。


问题答案:

阵列在处理时间和内存占用方面都更加高效。这尤其适用如果要在原始类型,例如操作intlong,由于List需要将包装在所有元素Object(如IntegerLong)。尽管Java
5引入的自动装箱功能减少了进行此类包装和展开所需的代码量,但它并没有消除性能问题,因为仍在创建包装对象。

但是,大多数应用程序可能没有与这些问题相关的任何性能瓶颈,因此在大多数情况下,List其他集合应该可以正常工作。在这些情况下,编程的简便性超过内存或CPU使用率的增长,List是正确的选择。



 类似资料:
  • 问题内容: 我有两个不同形状的numpy数组,但是长度(引导尺寸)相同。我想对它们中的每一个进行混洗,以使相应的元素继续对应-即相对于其前导索引一致地对它们进行混洗。 该代码有效,并说明了我的目标: 例如: 但是,这感觉笨拙,效率低下且速度慢,并且需要复制数组-我宁愿就地对它们进行混洗,因为它们会很大。 有没有更好的方法来解决这个问题?更快的执行速度和更低的内存使用是我的主要目标,但是优雅的代码也

  • 问题内容: 有人告诉我,Java允许协变数组子类型化,换句话说,如果A是B的子类型,那么A []是B []的子类型,但这是一个不好的功能,因为它可能导致运行时错误。有人可以给我一个具体的例子来说明它如何导致运行时错误,以及Java是否/如何解决此问题? 谢谢! 问题答案: 很简单。 只要您将内容取出,协变类型就不错,但是放入内容的那一刻,整个事情就破裂了。假设您有一个采用Object []作为参数

  • 每次需要整数数组时,我都会使用以下代码: 我使用BufferedReader而不是Scanner来降低输入过程中的时间复杂度。然而,当数组大小相对较大时,我想知道这种方法是否比Scanner有效(

  • 问题内容: 在我的游戏代码中,我尝试添加一张手牌。一旦我做完了,我的数组就超出了范围。一切看起来都不错,但也许我缺少了一些东西。 仅供参考,一个和两个是Player实例。来自Main类的相关代码(对格式感到抱歉。我很想将其传输到Stack Overflow): 卡类: 玩家等级: 问题答案: 问题出在你的循环上 没有其他任何值可设置,因此此循环不断循环,直到所有玩家拥有超过52张牌为止。一旦某人拥

  • 我正在建立一个竞争网站,需要存储多轮的评委评分为每个条目。 第一轮和第二轮的得分为0或1。如果有一半的评委给0分,就不能进入下一轮。 那些进入第三轮的人将得到1-10分。排名前十的金额(评委综合得分)将进入最后一轮。第四轮也会采用同样的方法,但会显示胜利者等。 我想确保尽可能好地设置表结构,以帮助排序上述数据。 最好是: 每个条目一行,该条目的评判分数存储在一个数组中的一列中 或 每个条目、每个法

  • 问题内容: 我有这样的事情: 现在要拥有此数组的总数量,我正在做这样的事情: 当只有一个数组时,这很容易,但是我想对其他具有不同属性名称的数组进行总结。 如果我可以做这样的事情,我会更开心: 但我不知道该如何处理,以至于我将来可以像这样重用它: 回答 我决定使用@ gruff-bunny建议,因此避免原型原型本机对象(数组) 我只是对他的答案做了一些修改,以验证数组,并且sum的值不为null,这