java集合三(Set)

java集合—Set

一.概述

Set表示无序的对象集合,且不允许元素重复,非线程安全。与List不同,Set不允许以任何顺序的方式访问Set的元素。有些Set基于它们的自然顺序对元素进行排序,但是Set接口本身没有提供这样的功能。实现Set的类有:ConcurrentSkipListSet,CopyOnWriteArraySet,EnumSet,HashSet,LinkedHashSet和TreeSet

一.HashSet

HashSet由HashMap支持。它不能保证集合的迭代顺序。该类允许null元素。非线程安全,但可以像这样明确地同步:Set s = Collections.synchronizedSet(new HashSet(…))。

	public static void main(String[] args) {
		HashSet<String> hset = new HashSet<>();
 
		hset.add("str1");
		hset.add("str2");
		hset.add("str3");
		hset.add("str4"); 
		hset.add(null);
 
		System.out.println(hset);
		
		Iterator<String> it = hset.iterator();
	     while(it.hasNext()){
	        System.out.println(it.next());
	     }
	}

输出结果:

[null, str3, str4, str1, str2]
null
str3
str4
str1
str2

二.TreeSet

TreeSet与HashSet类似,但TreeSet可以按升序对元素进行排序,且不允许null,而HashSet不维护任何顺序。像大多数其他集合类一样,TreeSet也没有线程同步,但也可以像这样明确地同步: SortedSet s = Collections.synchronizedSortedSet(new TreeSet(…));

	public static void main(String[] args) {
		TreeSet<String> tset = new TreeSet<String>();
 
        tset.add("aaa");
        tset.add("bbb");
        tset.add("ddd");
        tset.add("ccc"); 
        System.out.println(tset);
 
        TreeSet<Integer> tset2 = new TreeSet<Integer>();
 
        tset2.add(1);
        tset2.add(2);
        tset2.add(4);
        tset2.add(3); 
        System.out.println(tset2);
	}

输出结果如下,已经排好序

[aaa, bbb, ccc, ddd]
[1, 2, 3, 4]

三.EnumSet

EnumSet类是与枚举类型一起使用的专用Set实现。

	public class SetDemo {
		public static void main(String[] args) {
			Set<days> set = EnumSet.of(days.TUESDAY, days.WEDNESDAY);   
	    	Iterator<days> iter = set.iterator();  
	    	while (iter.hasNext())  
	      	System.out.println(iter.next());  	 
		}
	}

	enum days {
		SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
	}

四.LinkedHashSet

LinkedHashSet类是set接口的Hashtable和Linked列表实现。它继承了HashSet类并实现了Set接口。LinkedHashSet也不允许重复元素,但允许null,可排序,非线程同步。

	public static void main(String[] args) {
		LinkedHashSet<String> set = new LinkedHashSet();
		set.add("1");
		set.add("2");
		set.add("4");
		set.add("3");
		set.add(null);

		Iterator<String> i = set.iterator();
		while (i.hasNext()) {
			System.out.println(i.next());
		}
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值