Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java “是什么意思?”;列表是一个有序的集合……”;?_Java_Collections - Fatal编程技术网

Java “是什么意思?”;列表是一个有序的集合……”;?

Java “是什么意思?”;列表是一个有序的集合……”;?,java,collections,Java,Collections,我是个新手,对于这个琐碎的问题我很抱歉,但我一直在思考我在Java教程中读到的一句话 列表是一个有序的集合(有时称为序列) 我从中了解到,当我将元素放入列表时,它会自动为我排序,因为我运行了一个简单的代码,它证明了我错了: List <String> list = new ArrayList<String>(); list.add("Chris"); list.add("Brian"); list.add("Matt"); list.add("Greg"); for

我是个新手,对于这个琐碎的问题我很抱歉,但我一直在思考我在Java教程中读到的一句话

列表是一个有序的集合(有时称为序列)

我从中了解到,当我将元素放入列表时,它会自动为我排序,因为我运行了一个简单的代码,它证明了我错了:

List <String> list = new ArrayList<String>();

list.add("Chris");
list.add("Brian");
list.add("Matt");
list.add("Greg");

for (Iterator<String> it = list.iterator();it.hasNext();) {
    System.out.print(it.next()+"\n");
}
所以我的问题是什么是“列表是有序的集合”


谢谢

它们是按照您的顺序订购的。没有按字母或数字排序。无序列表(集合)就像从袋子里抓弹珠一样。

按顺序,这意味着每个元素都分配了一个索引,并且可以被该索引引用。在一个集合中,事物没有索引。

有序并不意味着已排序,它意味着项目将按照您放置它们的顺序显示


这与SortedSet(例如,SortedSet)不同,SortedSet中的项目不会按照您放置它们的顺序进行排序,而是根据您放置的任何排序标准进行排序,或者根据HashMap进行排序,在HashMap中,它们可能会以任何顺序显示,取决于散列函数。

它simpy的意思是,如果将对象按特定顺序放入,它们将保持该顺序。注意你的名字是如何以同样的顺序出现的

将此与一个集合(其他类型的集合)进行比较,其中它们以随机顺序出现(因为集合内部没有顺序)。这可以提高性能,如果顺序不重要,通常使用集合,如果重要,则使用列表

列表是一个有序的集合(有时称为序列)

这意味着列表维护元素的顺序。换句话说,您添加的第一个元素保留在索引0处。添加的第二个元素保留在索引1中。等等


如果删除一个元素,其余元素仍保持相同的顺序,尽管删除元素后的元素会更改其索引位置。

这是非常有序的。您将
排序的
排序的
相混淆。它是有序的,因为您在迭代时获取项目的顺序与您在其中插入项目的顺序相同。@Keppil“ordered”通常可以指任何顺序-插入顺序、字典顺序、随机顺序或其他。只有在这种情况下,“ordered”代表“ordered by insertion order”。@delnan:我没有说任何关于插入顺序的事情。@Keppil你最好考虑一下;-)我想说的是,“按X排序”也是一个顺序。已排序的集合在通常意义上是按X排序的,而不是数据结构意义上的“有序”。。。。从hashbag中抓取弹珠可以通过指定顺序来添加弹珠<代码>添加(a);添加(0,b);添加(1,c);添加(0,d)我想它们最终会变成d,b,c,a。@Lee Meador:不是在最初的插入中。如果索引超出范围(索引<0 | |索引>大小()),则会出现IndexOutOfBoundsException。带位置的add相当于insert。你在我打字时改变了你的评论。你的改变使序列正确。抓住我了,嗯。我想我把它修好得够快了。我忘了你不能在一瞬间添加超过结尾的内容。只有经过排序的集合才能按排序的顺序为你提供项目。例如,
HashSet
不指定任何顺序。只有ArrayList提供索引。例如,LinkedList必须在列表中迭代以获取第n个元素,这使得它们的“索引”操作非常慢。无序集合的索引概念尚未定义。
Chris
Brian
Matt
Greg