码迷,mamicode.com
首页 > 其他好文 > 详细

集合之——LinkedHashSet

时间:2015-09-13 20:15:47      阅读:126      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!