JAVA复习5(集合——HashSet)

2 HashSet   无序  不可重复

 

HashSet 子类使用最多一个子类, 无序 ,不可重复

观察HashSet定义

public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, Serializable

 

范例:使用HashSet

public static void main(String[] args) {

          Set<String> all=new HashSet<>();

          all.add("hello");

          all.add("world");

          all.add("hadoop");

          all.add("hive");

          all.add("hbase");

          all.add("hello");

          all.add("hello");

          for(String str:all) {

              

               System.out.println(str);

          }        

     }

 

使用HashSet 判断重复元素依据 是 hashCode  和 equals()方法

 

hashCode是什么意思?

 

哈希表: 字典表   k   v    hashcode意思通过一些运算把复杂的对象,主键, 转换为数组的下标 arrayindex 进行存储

 

HashCode的设计原理主要三大特性:

 

1 确定的    对象.hashCode  该对象无论调用多少次这个hashCode方法得出的结果 一定是一样的

 

2 高效的    哈希算法一定不能是复杂的

 

3 均匀分布的

 

K    hash    V

 

A    2       zxy

 

B   0        pqr

 

C  3         ijk

 

D  2         uvm

 

通过了解hashCode的原理,以及为什么在HashSet 中元素是无序的, 以及为什么依靠HashCode 和equals()方法来判断重复元素

 

范例:使用自定义类完成HashSet的使用

public static void main(String[] args) {

         

          Set<Person> all=new HashSet<>();

          all.add(new Person("张三",20));

          all.add(new Person("李四",30));

          all.add(new Person("隔壁老王",89));

          for(Person per:all) {

              

               System.out.println(per);

          }

     }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值