HashSet集合的介绍和哈希值

java.util.Set接口 extends Collection接口
Set接口的特点:
1.不允许存储重复的元素
2.没有索引,没有带索引的方法,也不能使用普通的for循环遍历
java.util.HashSet集合 implement Set接口
hashset特点:
1.不允许存储重复的元素
2.没有索引,没有带索引的方法,也不能使用普通的for循环遍历
3.是一个无序的集合,存储元素和取出元素的顺序有可能不一样
4.底层是一个哈希表结构(查询速度非常的快)

代码:

    public static void main(String[] args) {
        HashSet<Integer> set = new HashSet<>();
        //使用add方法往集合中添加元素
        set.add(1);
        set.add(3);
        set.add(2);
        set.add(1);

        //使用迭代器遍历set容器
        //获取迭代器
        Iterator<Integer> iterator = set.iterator();
        while(iterator.hasNext()){
            Integer next = iterator.next();
            System.out.println(next);//1 2 3
        }
        
        //增强for循环遍历set集合
        for (Integer integer : set) {
            System.out.println(integer);
        }
    }

哈希值

/**
 * 哈希值:是一个十进制的整数,由系统随机给出(对象的地址值,是一个逻辑地址,是一个模拟出来的地址,不是数据实际存储的物理地址)
 * 在Object类中有一个方法它可以获取对象的哈希值
 * int HashCode()  返回该对象的哈希码值
 * hashCode方法的源码: public native int hashCode();
 *  native 代表该方法调用的是本地操作系统方法
 */
public class Test {
    public static void main(String[] args) {
        //Person继承了Object,所以可以使用Object中的hashCode方法
        Person person = new Person();
        int i = person.hashCode();
        System.out.println(i);//1950409828

        Person person2 = new Person();
        int i2 = person2.hashCode();
        System.out.println(i2);//1229416514

        //String类的哈希值
        String str = "abcd";
        String str1 = "abcd";
        int code = str.hashCode();
        int code1 = str1.hashCode();
        System.out.println(code);//2987074
        System.out.println(code1);//2987074
        System.out.println(str == str1);//true
        System.out.println("===========");
        System.out.println("重地".hashCode());//1179395
        System.out.println("通话".hashCode());//1179395

        System.out.println("重地"=="通话");//false
    }
}

class Person extends Object{
//重写HashCode方法
    @Override
    public int hashCode() {
        return super.hashCode();
    }
}
posted @ 2022-07-05 17:27  我滴妈老弟  阅读(49)  评论(0编辑  收藏  举报