• HashSet 浅析示例


    * 1、继承自抽象类 AbstractSet,实现接口 Set、Cloneable、Serializable;
    * 2、元素无顺序;
    * 3、元素不可重复;
    * 4、采用哈希算法插入数据,插入速度快;
    * 5、非线程安全,轻量级;

     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、非线程安全,轻量级;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("
    *** 元素不可重复(forEach)  ***");
    52         for(Object object : set){
    53             System.out.print(object + " - ");
    54         }
    55         
    56         System.out.println("
    *** 元素不可重复(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("
    *** 元素无顺序  ***");
    85         System.out.print("是否无顺序:" + exists + ", 可能的顺序数为:" + count);
    86     }
    87 }
  • 相关阅读:
    mysql数据库表中判断字段是否存在,如果不存在则创建该字段
    PHP同时操作两个mysql数据库
    Bootstrap-分页插件Paginator
    NLP--自然语言处理与机器学习会议
    对CURL的一些研究
    Nginx完整配置说明
    SecureCRT自动登陆到服务器的脚本以及脚本编写简单说明
    Fast CGI 工作原理
    FastCGI中文规范
    Linux +apache+fastcgi运行c/c++
  • 原文地址:https://www.cnblogs.com/hapday/p/5656695.html
Copyright © 2020-2023  润新知