* 1、继承自抽象类 AbstractSet,实现接口 Set、Cloneable、Serializable;
* 2、元素无顺序;
* 3、元素不可重复;
* 4、采用哈希算法插入数据,插入速度快;
* 5、非线程安全,轻量级;
* 6、由于实现了接口 Cloneable,故此可以被复制;
* 7、由于实现了接口 Serializable,故此可以被序列化到磁盘上;
1 package com.smbea.demo; 2 3 import java.util.HashSet; 4 import java.util.Iterator; 5 import java.util.Set; 6 7 /** 8 * 1、继承自抽象类 AbstractSet,实现接口 Set、Cloneable、Serializable; 9 * 2、元素无顺序;10 * 3、元素不可重复;11 * 4、采用哈希算法插入数据,插入速度快;12 * 5、非线程安全,轻量级;13 * 6、由于实现了接口 Cloneable,故此可以被复制;14 * 7、由于实现了接口 Serializable,故此可以被序列化到磁盘上15 * @author hapday16 * @date 2016年7月9日 下午8:27:1617 *18 */19 public class HashSetDemo {20 public static void main(String[] args) {21 elementUnrepeatableTest();22 23 elementInconsecutiveTest();24 }25 26 /**27 * 验证【元素不可重复】28 */29 public static void elementUnrepeatableTest() {30 int num1 [] = new int[]{7,8,9};31 int num2 [] = num1;32 33 Set<Object> set = new HashSet<Object> ();34 set.add(1);35 set.add(2);36 set.add(3);37 set.add(3);38 set.add("string");39 set.add(num1);40 set.add(num2);41 set.add("中文");42 set.add("中文也不可重复");43 set.add("中文也不可重复");44 45 System.out.println("*** 元素不可重复 ***");46 Iterator<Object> iterator = set.iterator();47 while(iterator.hasNext()){48 System.out.print(iterator.next() + " - ");49 }50 51 System.out.println("\n*** 元素不可重复(forEach) ***");52 for(Object object : set){53 System.out.print(object + " - ");54 }55 56 System.out.println("\n*** 元素不可重复(toString()) ***");57 System.out.print(set);58 }59 60 /**61 * 【元素无顺序】62 */63 public static void elementInconsecutiveTest() {64 Set<Integer> set = new HashSet<Integer> ();65 for(int index = 1; index <= 100000; index++){66 set.add(index); // 加入 10 万的元素67 }68 69 boolean exists = false; // 是否存在:true-存在;false-不存在70 int count = 0; // 存在数,多次执行,我们发现当元素的个数为 10W 时,这个值是不变的,均为 17232,这在一定程度上说明哈希算法是相对稳定的71 int current = 0; // 当前元素72 int previous = 0; // 上一个元素73 Iterator<Integer> iterator = set.iterator();74 while(iterator.hasNext()){75 current = iterator.next();76 if(current <= previous){77 exists = true;78 count++;79 }80 81 previous = current;82 }83 84 System.out.println("\n*** 元素无顺序 ***");85 System.out.print("是否无顺序:" + exists + ", 可能的顺序数为:" + count);86 }87 }
原标题:HashSet 浅析示例
关键词: