“A List是一个有序的集合......”是什么意思?

时间:2013-06-04 19:10:11

标签: java collections

我是Collections的新手,对于这个微不足道的问题,我很抱歉,但我一直在思考我在Java教程中读过的一句话

  

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

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

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

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

由于

5 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:4)

  

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

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

它简单意味着如果按特定顺序放置对象,它们将保持该顺序。请注意您的名字的输入顺序与您输入的顺序相同。

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