哈希算法 和 map接口

一)Set接口:
     无序,不可重复(元素类型的equals方法比较)
     无序:与放入顺序不一致。
     比喻:List好比一个有格子顺序的盒子
       Set好比一个袋子。
  实现类:
     HashSet:底层是基于散列算法(哈希算法)来存储的数据结构
  
     treeSet:底层是基于有序的二叉树的数据结构
二)重写HashCode()和equals方法后的成立关系。
   hash值相同,equals不一定为true
   hash值不同,equals一定false.
   equals为true,hash值一定相同

   equals为false,hash值有可能一样

三)Map接口:存储数据是以key-value形式存储的。key相当于
  value的索引。作为key的对象类型必须重写hashCode方法。
     因为key也是唯一的,不能重复的。Map的key底层就是
   hashSet集合。
  Map接口提供的常用方法:
    put(K k,V v):作用是向Map对象中添加元素
    get(K k):作用是通过k获取对应的value值。
                          当Map中没有相应的k,那么返回的value就是null
       
        特点:key值可以为null.
  Map接口最常用的实现类:   HashMap


  四)为什么要重写HashCode()和equals()方法:
      因为Set集合要存储不能重复的元素,我们提供了Hash
      算法为每一个对象分配一个hash值,先根据hash值来判断
      集合中是否存有此hash值,如果存在,那么就应该通过
      equals算法来判断是否相同,不相同,就会存储在
      对应的链表中,增加了检索困难,所以,我们要让hash值

      相同的对象,内容也应该一样。

五)HashMap在存储数据时,如果再次存入相同的key时,会替换
     原来的key-value.
     Map<String,String> map = 
      new HashMap<String,String>();
     map.put("A","abc");
     map.put("B","bcd");

     map.put("A","fff");//会将原来的key-value替换掉


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值