首页 > 其他 > 详细

集合之——LinkedHashSet

时间:2015-09-13 20:13:31      阅读:256      评论:0      收藏:0      [点我收藏+]

    我们常说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集合是无序、不重复的吗?怎么会矛盾呢?

    其实,所说的无序不重复中的“无序”,指的是在存入的时候,上一个元素和下一个元素在链表中的位置不是挨着的,很随意,可能中间相隔多个间隔,而且位置顺序也没有前后之分(这才是通常所说的“无序”)。

    但是,每存入的前后元素,他们是通过引用来指向存入的前后元素。即相当于给每个存入的元素编号,他们的编号是有顺序的,但是所在的存储位置是没顺序的,所以打印出来的结果就是按照存入的顺序。

    所以,我们要理解,所说的无序,是指所存储的位置之间无序。

    下面,我画张图说明一下。

技术分享


集合之——LinkedHashSet

原文:http://my.oschina.net/ilaoda/blog/505603

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!