Day20

1set

1.1散列表

散列表 : 可以理解为数组保存元素是个链表 
  散列表中保存的是键值对(K和V)  
   hashCode : hash算法,是把不定长的数据改变为定长的数据,是一种安全的加密算法,但不保证唯一
           同一个对象生成多次hash值,那么值一定是相同的,
          不同对象也有可能生成相同的hash值 
  添加过程 : 
           1 先调用添加的K,调用hashCode生成hash值
           2 根据hash值计算数组下标
          3 判断数组中该下标对应的位置上是否有元素
          3.1 如果没有保存数据,就把该对象放到对应的下标中
           3.2 如果保存了数据,此时调用添加的K的equals方法,和数组中该下标对应的所有数据的key进行比较
         3.3 如果和数组下标对应的链表中 的数据 都不相等,就把该数据添加到对应的链表中
         3.4 如果和链表中的数据一致了,则key不添加,把value值替换(用新的替换原来的)
         4 java1.8新改动,如果该链表中,节点个数大于7,则该链表被转换为红黑树
   在java把 没有散列表这个说法,只是把散列表封装为了HashMap和HashTable,并且HashTable已经过时
     并且 HashMap的默认容量为 16
 HashSet 底层就是一个HashMap,并且只是Map的key部分,没有value

 

1.2hashSet 使用

 

2Map 

 2.1继承体系

2.2Map特性 

Map : 无序 , key不可重复,value值可重复
Map和Collection不一样,但是操作基本上是一样的
集合保存单个对象,而map保存键值对映射关系

 2.3常用方法

put(K,V) : 添加数据
 *         remove(K) : 删除数据
 *         clear() : 清空
 *         size() : 个数
 *         isEmpty() : 判断是否为空
 *         get(K) : 根据Key获取value
 *         values() : 获取所有的value,返回集合
 *         containsKey(K) : 判断是否包含某个key
 *         containsValue(V) : 判断是否包含某个value
 *         Set keySet() : 获取map中所有的key,返回set
 *         Set entrySet() : 获取map中的键值对,返回set 


2.4HashMap

 

2.5Properties 

 2.6TreeMap

2.7面试题 

Map转list并以value排序

 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值