zoukankan      html  css  js  c++  java
  • HashSet集合

    1.HashSet

      Set集合,无索引,不可以重复,无序

      在使用 list 集合时,add方法返回的永远时true,有序,有索引

      在使用 Set 集合时,add方法再添加重复元素时,返回的false,无序,无索引

     1     HashSet<String> hashSet = new HashSet<>();
     2         hashSet.add("t");
     3         hashSet.add("a");
     4         hashSet.add("b");
     5         hashSet.add("b");
     6         hashSet.add("c");
     7         hashSet.add("r");
     8         hashSet.add("a");
     9         System.out.println(hashSet.size()); //    长度为    5
    10         
    11         System.out.println(hashSet);        //输出结果        [a, b, r, c, t]
    12 
    13 
    14         for (String s : hashSet) {            //    输出结果        a b r c t 
    15             System.out.print(s+ " ");
    16         }

      1.储存自定义对象保证元素的唯一性

      2.当 hashset 存储自定义对像时(例:student类),必须重写 equals 方法和 hashcode 方法才能保证元素的唯一

      3.把对象往集合中添加时,会调用hashcose方法,hashcose值一样时才会调用equals方法。

      

      

    1 public boolean equals(Object obj){
    2     //向下转型为Student类
    3     Student s = (Student)obj;
    4     return this.name.equals(s.name) && this.age == s.age;
    5   }
    1 // 因为每个对象的hashcode的值都不一样,
    2 // 而 equals 方法需要两个对象的 hashcode值都一样才可以进行判断
    3 // 所以在hashcode方法中返回一个固定的值,
    4     public int hashCode() {
    5         return 10;
    6 
    7 
    8     }

      1.hashset原理

         我们使用set方法都是需要去掉重复的元素,如果在储存的时候逐个equals()方法比较,效率低,哈希算法提高

       了去重复的效率,降低了使用equals()方法的次数

         当 hashset 调用了 add() 方法储存对象的时候,先调用对象的 hashcode()方法得到一个哈希值,

       然后再集合中查找是否有哈希值相同的对像,如果没有哈希值相同的对象就直接存入集合,

       如果有哈希值相同的对象,就和哈希值相同的对象进行 equals()比较,比较结果为false就存入,true就不存

         将自定义类(如,student,person,cat)的对象存入hashset去重复,必须重写hashcode()和equals方法

  • 相关阅读:
    洛谷$P4768 [NOI2018]$归程 $kruscal$重构树
    洛谷$P2469 [SDOI2010]$ 星际竞速 网络流
    洛谷$P2572 [SCOI2010]$ 序列操作 线段树/珂朵莉树
    $CF914D Bash and a Tough Math Puzzle$ 线段树
    洛谷$P2824 [HEOI2016/TJOI2016]$ 排序 线段树+二分
    洛谷$P$4137 $Rmq Problem / mex$ 主席树
    bat语法
    zabbix监控oracle
    sqlserver常用命令-4
    sqlserver库相关-表相关-3
  • 原文地址:https://www.cnblogs.com/xsh726/p/11378839.html
Copyright © 2011-2022 走看看