标签:
我们常说List集合是有序、可重复;Set集合是无序、不可重复的。
那么我们试试一个程序,说明为什么LinkedHashSet是“有序”的呢?
package com.ilaoda.day0912; import java.util.LinkedHashSet; import java.util.Set; /** * 测试 LinkedHashSet * @author Administrator * */ public class Test2 { public static void main(String[] args) { Set set = new LinkedHashSet(); set.add("World"); set.add("iLaoda"); set.add("Hello"); System.out.println(set); //打印:[World, iLaoda, Hello] } }
结果:
[World, iLaoda, Hello]
为什么会出现存入和取出一样的呢?不是说Set集合是无序、不重复的吗?怎么会矛盾呢?
其实,所说的无序不重复中的“无序”,指的是在存入的时候,上一个元素和下一个元素在链表中的位置不是挨着的,很随意,可能中间相隔多个间隔,而且位置顺序也没有前后之分(这才是通常所说的“无序”)。
但是,每存入的前后元素,他们是通过引用来指向存入的前后元素。即相当于给每个存入的元素编号,他们的编号是有顺序的,但是所在的存储位置是没顺序的,所以打印出来的结果就是按照存入的顺序。
所以,我们要理解,所说的无序,是指所存储的位置之间无序。
下面,我画张图说明一下。
标签:
原文地址:http://my.oschina.net/ilaoda/blog/505603