HashSet集合介绍以及哈希值

HashSet集合介绍

Set接口继承自Collection接口

Set接口的特点:

  1、不允许存储重复的元素

  2、没有索引,没有带索引的方法,也不能使用普通的for循环进行遍历

 

HashSet集合实现了Set接口

HashSet集合的特点:

  1、不允许存储重复的元素

  2、没有索引,没有带索引的方法,也不能使用普通的for循环进行遍历

  3、是一个无序的集合,存储元素和取出的元素顺序有可能不一致

  4、底层是一个哈希表结构,查询的速度非常快

 

    public static void main(String[] args) {
        Set<Integer> set = new HashSet<>();
        set.add(1);
        set.add(5);
        set.add(3);
        set.add(4);
        set.add(3);
        set.add(2);
        //使用迭代器遍历set集合
        Iterator<Integer> iterator = set.iterator();
        while (iterator.hasNext()){
            Integer next = iterator.next();
            System.out.println(next);
        }
        //使用增强for进行遍历
        for (Integer integer : set) {
            System.out.println(integer);
        }
    }

 

 

  

 

 

 

哈希值

哈希值是一个十进制的整数,由系统随机给出(就是对象的地址值,是一个逻辑地址,是模拟出来的地址,不是数据实际存储的物理地址)
在Object类中有一个方法可以获取对象的哈希值。

public native int hashCode();
native:代表该方法调用的是本地操作系统的方法
public class Person {
}
    public static void main(String[] args) {
        Person person = new Person();
        int i = person.hashCode();
        System.out.println(i);
        Person person1 = new Person();
        int i1 = person1.hashCode();
        System.out.println(i1);
    }

哈希值由系统随机给出

 

 

也可以在类中重写hashCode方法

public class Person {
    @Override
    public int hashCode() {
        return 1;
    }
}
    public static void main(String[] args) {
        Person person = new Person();
        int i = person.hashCode();
        System.out.println(i);
        Person person1 = new Person();
        int i1 = person1.hashCode();
        System.out.println(i1);
    }

 

posted @ 2022-07-06 09:34  xjw12345  阅读(94)  评论(0)    收藏  举报