许多人和作者建议我们使用列表而不是数组。
List <Integer> list = new ArrayList<Integer>();
list.addElement(1);
....
它背后的原因是什么?
许多人和作者建议我们使用列表而不是数组。
List <Integer> list = new ArrayList<Integer>();
list.addElement(1);
....
它背后的原因是什么?
通常情况下,你应该选择适合当前任务的正确数据结构。你需要了解手头的任务以及所有不同选项以及它们在迭代、搜索、添加、删除和插入数据方面的比较。总体而言,你需要了解数据结构如何访问和操作内存,并根据预计应用程序的使用方式选择最佳的数据结构。
显然,并不总是一目了然的。但是你可以了解不同数据结构的理想情况。
例如,在纯静态、固定长度的数据中,如果你只需要迭代而无需进行搜索,则使用数组是理想的。在密码算法中通常使用这种类型的数组。如果数据是静态的,但你需要进行搜索,你可能需要某种类型的树形结构。如果你需要快速插入,则哈希可能是理想的选择。如果数据经常发生变化,则需要一种能够高效更改其大小的结构,如列表。
当然,还有很多不同的数据结构设计来解决各种特定问题的变化和组合。之所以有这么多的数据结构,是因为它们在编写高效程序中扮演着重要角色。我的意思是,学习数据结构。了解每种数据结构的理想情况,然后你就能够为任何任务决定或设计合适的数据结构。
当您事先不知道元素数量时,使用 ArrayList 要比 Array 更好。ArrayList 比 Arrays 慢。所以,如果需要效率,请尽可能使用数组。
列表可以很容易地增加大小,并且您可以轻松地在列表中添加和删除元素。这是数组所不能做的。不过,您需要考虑一下您需要列表的目的。如果您认为列表不会经常更改,则应该使用数组。
编辑:
在处理原始类型时,有些情况下最好使用数组,因为在使用ArrayLists的情况下,涉及到原始类型的装箱和拆箱,与使用数组处理原始类型相比可能会慢一些。
我使用列表、动态数组等,主要是因为我不需要担心下一个空闲位置在哪里或者是否足够大,因为Sun已经替我做了这些。
List <Integer> list = new ArrayList<Integer>();
到
List <Integer> list = new LinkedList<Integer>();
肯定会起作用,因为你编写的代码遵循了列表接口提供的合同。