【问题标题】:What is meant by "A List is an ordered Collection..."? [duplicate]“列表是有序集合......”是什么意思? [复制]
【发布时间】:2013-06-04 19:10:11
【问题描述】:

我是 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

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

谢谢

【问题讨论】:

  • 非常有序。您将orderedsorted 混淆了。
  • 它是有序的,从某种意义上说,您在迭代时获取项目的顺序与您将项目插入其中的顺序相同。
  • @Keppil "ordered" 通常意味着按任何东西排序 - 插入顺序、字典顺序、随机顺序或其他。只有在这种情况下,“ordered”才代表“ordered by inserting order”。
  • @delnan:我没有说广告订单。
  • @Keppil 你最好考虑一下 ;-) 我的意思是,“[按 X] 排序”也是一个命令。排序后的集合是按通常意义上的(按 X)排序的,而不是数据结构意义上的“有序”。

标签: java collections


【解决方案1】:

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

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

【讨论】:

  • 只有一个有序的 Set 才能以有序的顺序为您提供项目。例如,HashSet 没有指定任何顺序。
【解决方案2】:

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

这意味着 List 保持元素的顺序。换句话说,您添加的第一个元素保留在索引 0。您添加的第二个元素保留在索引 1。等等。

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

【讨论】:

  • 您可以通过指定顺序来添加它们。 add(a); add(0,b); add(1,c); add(0,d); 他们最终是 d、b、c、a(我认为)。
  • @Lee Meador:不在初始插入中。如果索引超出范围 (index size()),您将收到 IndexOutOfBoundsException。带位置的添加相当于插入。当我输入我的内容时,您更改了您的评论。您的更改使顺序正确。
  • 抓到我了,嗯。我虽然修得够快。我忘了你不能在一瞬间添加到结尾。
【解决方案3】:

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

【讨论】:

  • 只有 ArrayList 提供索引。例如,LinkedList 必须遍历列表才能到达第 n 个元素,这使得它们的“索引”操作非常缓慢。
  • 操作可能很慢,但是定义好了。无序集合的索引概念是未定义的。
【解决方案4】:

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

【讨论】:

  • ...从散列袋中抓起弹珠
【解决方案5】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-23
    • 1970-01-01
    • 2011-04-14
    • 2019-09-12
    • 2015-01-22
    • 2014-01-17
    • 2015-02-16
    • 2020-10-27
    相关资源
    最近更新 更多