程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> HashSet 淺析示例,hashset淺析示例

HashSet 淺析示例,hashset淺析示例

編輯:JAVA綜合教程

HashSet 淺析示例,hashset淺析示例


* 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 hapday
16  * @date 2016年7月9日 下午8:27:16
17  *
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 }

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved