zoukankan      html  css  js  c++  java
  • HashSet


    底层依赖于HashMap


    原理:保证元素的唯一性依赖于二个方法,一个是hasCode()方法一个是equals方法,

    先执行hashCode方法,当hashCode 方法返回值是一样的时候才会执行equals方法,当我们没有重写hashCode方法的时候那么使用的就是object类中的hashCode 方法,不同对象的哈希码值不一样.


    结论:

    使用HashSet集合存储元素,要保证元素的唯一性,需要依赖于元素的两个方法一个是hashCode方法一个是equals方法 ;

    只需要让元素重写hashCode方法和equals方法即可 ; 我们可以使用eclipse中的快捷键生成出来 , shift + alt + s ; h + enter ;

    import java.util.HashSet;
    import com.heiam.bean.Person;
    public class Demo1_HashSet {
    
    	/**
    	 * @param args
    	 * Set集合,无索引,不可以重复,无序(存取不一致)
    	 */
    	public static void main(String[] args) {
    		//demo1();
    		HashSet<Person> hs = new HashSet<>();
    		hs.add(new Person("张三", 23));
    		hs.add(new Person("张三", 23));
    		hs.add(new Person("李四", 24));
    		hs.add(new Person("李四", 24));
    		hs.add(new Person("李四", 24));
    		hs.add(new Person("李四", 24));
    		
    		//System.out.println(hs.size());
    		System.out.println(hs);
    	}
    
    	public static void demo1() {
    		HashSet<String> hs = new HashSet<>();		//创建HashSet对象
    		boolean b1 = hs.add("a");
    		boolean b2 = hs.add("a");	//当向set集合中存储重复元素的时候返回为false
    		hs.add("b");
    		hs.add("c");
    		hs.add("d");
    		System.out.println(hs);	//HashSet的继承体系中有重写toString方法
    		System.out.println(b1);
    		System.out.println(b2);
    		
    		for (String string : hs) {	/只要能用迭代器迭代的,就可以使用增强for循环遍历
    			System.out.println(string);
    		}
    	}
    
    }
    
  • 相关阅读:
    概率论中几个入门公式
    记一道贝叶斯公式的裸题
    BZOJ3585: mex(主席树)
    利用MingW检验程序运行内存
    清北集训Day3T1(转换)
    万能pb_ds头文件—bits/extc++.h
    清北集训Day1T3 LYK loves jumping(期望DP)
    洛谷P1962 斐波那契数列(矩阵快速幂)
    namespace用法
    BZOJ4868: [Shoi2017]期末考试
  • 原文地址:https://www.cnblogs.com/loaderman/p/6407390.html
Copyright © 2011-2022 走看看