在Java中,可以将对象数组视为对象的集合吗?

3

Oracle网站对集合的定义是:

A collection — sometimes called a container — is simply an object that groups multiple 
elements into a single unit.

我知道Java提供了java.util.Collection,它包括SetArrayListQueue等。
我的问题是:如果我把对象数组称为对象集合,那么我会错吗?(即使java.util.Collection可能不包括数组)
编辑: 我发现了一些有趣的东西。这就是微软如何定义数组集合的方式:http://msdn.microsoft.com/en-sg/library/9ct4ey7x(v=vs.90).aspx

你说得没错,数组确实是对象的集合,尽管它不实现Collection接口。话虽如此,当人们说到集合时,通常是指实现了Collection接口的东西。 - Benjamin Gruenbaum
1
如果你写一篇文本,将“集合”这个术语定义为适用于数组,那么你可以这样使用该术语。英语不会阻止你这样做。 - Marko Topolnik
那么,如果我正在为自己编写一个关于对象的文档。我可以写一个名为“对象集合”的主题标题,其中数组是其子主题之一。这样可以吗? - user3437460
值得注意的是,数组可以是原始数据类型的数组,而“集合”是引用类型的集合。 - Peter Lawrey
4个回答

2

这有点是语义学的问题。英语中的“collection”一词可以表示“不止一个”,因此,数组确实是一个集合。然而,在Java中,你通常会看到它拼写为Collection,带有大写字母C - 也就是说,它是java.util.Collection子类型的对象。对于这个意思,你不能使用数组,因为在Java中,数组没有实现这个接口。


如果我在没有指向util.Collection的情况下将对象数组称为对象集合,那么实际上这是具有误导性的,对吗? - user3437460
在我看来,是的。 - Mureinik

2
我不认为这是个问题。从字面上看,数组是一个“集合”(请参见此处)。但是,在Java中,集合的含义从仅仅指一组对象变成了一组管理(存储、检索、操作等)对象的机制,并由原型接口Collection来指定。
因此,除非你在Java中覆盖该接口,否则你的数组并不完全是一个集合。

2

数组是一个具有固定数量的对象,包括0个位置,用于存储相同类型变量的。
没有更多了解。
如果你想,你可以说这是一种集合、列表或序列。
但是所有这些术语都被广泛认识为接口或类的名称或部分,它们远不止一个简单的数组。
因此,如果你使用这些名称来表示数组,其他人可能无法正确理解你的意思。
我的建议:数组就是数组,所以称其为数组


1

有一个可以帮助你解决这个问题的区别。Array是一个具有连续但有限内存的对象。而集合是一组对象,每个对象都有不同的内存地址。

Arrays在操作中相对较快,与Collections相比。

CollectionsArrays的基础上提供了许多实用方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接