1

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

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

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

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");
}

这导致没有以任何方式订购:

Chris
Brian
Matt
Greg

所以我的问题是“列表是有序集合”是什么意思?

谢谢

4

5 回答 5

6

Ordered 并不意味着已排序,这意味着项目将按照您放入的顺序显示。

这与一个 SortedSet 形成对比,其中项目不会按照您放入的顺序进行排序,它们将根据您放置的任何排序标准进行排序,或者 HashMap,它们可能以任何顺序显示在全部,取决于散列函数。

于 2013-06-04T19:13:36.003 回答
4

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

这意味着 List 维护元素的顺序。换句话说,您添加的第一个元素保留在索引 0 处。您添加的第二个元素保留在索引 1 处。依此类推。

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

于 2013-06-04T19:14:46.653 回答
1

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

于 2013-06-04T19:12:47.097 回答
0

它们按您放入的顺序排列。不按字母或数字排序。无序列表(集合)就像从袋子里抓弹珠一样。

于 2013-06-04T19:12:39.037 回答
0

这很简单,意味着如果您按特定顺序放置对象,它们将保持该顺序。注意你的名字是如何按照你输入的顺序出现的。

将此与它们以随机顺序出现的集合(另一种类型的集合)进行比较(因为在内部该集合没有顺序)。这可以带来性能优势,如果顺序不重要,通常使用集合,如果重要则使用列表。

于 2013-06-04T19:13:53.820 回答