正如标题所述,我试图找出何时使用某些类型的列表。我刚刚意识到我不知道这些Object [] - 列表是如何实现的,因此它们比List更受欢迎。也许只有当我知道列表的大小不会改变时,它们才是首选?我希望我的问题清楚。
干杯,
答案 0 :(得分:6)
第25项:首选列表到数组
阅读第25项的解释。
此外,Object[]
的大小已固定,List
的大小可能会发生变化(效率取决于实施情况 - 如果是LinkedList
,ArrayList
等。)
答案 1 :(得分:4)
您几乎总是喜欢列表(或其他收藏集)。
阵列是不灵活的,固定实现的构建块,可用于实现集合。但在正常的应用程序代码中,直接使用它们很少有用。
例如,使用List,您可以轻松地在任何位置添加和删除对象,交换实现以满足您的需求,或者如果您的需求发生变化,甚至可以用List
替换SortedSet
。 / p>
一个很大的例外是缓冲区或原始数据的其他数组:对于从InputStream
读取,您将使用byte[]
,绝对不是List<Byte>
。
答案 2 :(得分:2)
Object[]
被称为数组 - 一种在大多数编程语言中都能找到的非常简单的基础数据结构。数组在Java语言规范和VM规范中得到特殊处理(例如它们自己的语法)。您需要了解的内容:
int
,但不能列出 - 它可能看起来像是因为自动装箱,但它实际上是List<Integer>
,它有更多的时间和内存开销int[][] matrix = new int[100][100]
- 比List<List<Integer>>
方便得多,因为在那里,您还必须手动创建嵌套列表。答案 3 :(得分:1)
Object[]
不列表,它是一个数组。您无法调整数组大小,它在创建时具有固定大小。是否可以调整List
的大小取决于具体实现,因为List
只是一个接口。例如,ArrayList
和LinkedList
可能会添加和删除元素,而Collections
返回的某些列表是固定大小的。
答案 4 :(得分:0)
您已经自己给出了答案:如果您不希望更改大小,请使用数组。如果您有更多动态行为,请使用列表。
答案 5 :(得分:0)
数组是内存中的直接数组。列表可以用不同的方式构建(例如,在ArrayList的情况下使用数组)。
关于何时使用它们,列表更灵活,Collection框架为它们提供了非常有用的操作。
我建议你阅读Essential Java关于该主题的章节,它将在细节中输入比我更多的内容。
答案 6 :(得分:0)
Object[]
不是列表,而是数组。
Java中的数组是在连续的内存块中分配的,因此索引它们(myArray[3]
)非常有效。它们也具有存储效率(不是很多开销)。
列表是不同的东西,实际上 没有List<Object>
的实现;这是一个接口,一个处理列表的抽象方式。有LinkedList<Object>
和ArrayList<Object>
等,它们是接口的实际实现,在各种操作之间有不同的权衡 - 索引到列表,遍历它,修改它等等 - 以及之间他们引入了多少存储开销。
当你不打算改变阵列中有多少元素时,数组很棒;当你需要改变有多少元素时,列表很棒。