Map和Set

本文介绍了Map和Set的基本概念与常用操作,包括Map的put、get、remove等方法和Set的add、contains、remove等方法。详细探讨了二叉搜索树、哈希表的冲突及其解决策略,例如哈希冲突的产生和如何通过调整负载因子避免冲突。此外,还讨论了HashMap在Java中的扩容机制和处理哈希冲突的方法。
摘要由CSDN通过智能技术生成


目录

🥬Map

🍌Map常用方法的使用

🥬Set

🍌Set常用方法的使用

🌲例题

🥬二叉搜索树

🥬哈希表

 🍌哈希冲突

🍌避免冲突

🥬小结


🥬Map

Map 是一个接口类,该类没有继承自 Collection ,该类中存储的是 <K,V> 结构的键值对,并且 K 一定是唯一的,不能重复

🍌Map常用方法的使用

1、V put(K key, V value)   //设置 key 对应的 value

 map.put(1,"hello");
 map.put(2,"world");

//结果:{1=hello, 2=world}

2、V get(Object key)   //返回 key 对应的 value

map.get(1);

//结果:hello

3、V getOrDefault(Object key, V defaultValue)   //返回 key 对应的 valuekey 不存在,返回默认值

String str=map.getOrDefault(2,"hi");
String str1=map.getOrDefault(3,"hi");

//结果:
//str  world  
//str1 hi

4、V remove(Object key)   //删除 key 对应的映射关系

map.remove(1);
System.out.println(map);

//结果:{2=world}

5、Set<K> keySet() 返回所有 key 的不重复集合

 map.put(1,"hi");
 map.put(2,"thanks");
 map.put(2,"what");
 map.put(3,"how");
 System.out.println(map.keySet());

//结果:[1, 2, 3]

6、Set<Map.Entry<K, V>> entrySet()   //返回所有的 key-value 映射关系

map.put(1,"hi");
map.put(2,"thanks");
map.put(3,"how");
for(Map.Entry<Integer, String> entry : map.entrySet()){
        System.out.println(entry.getKey() + "--->" + entry.getValue());
   }
   System.out.println();

//结果:
1--->hi
2--->thanks
3--->how

7、boolean containsKey(Object key)   //判断是否包含 key

     boolean containsValue (Object value)   //判断是否包含 value
 map.put(1,"hi");
 map.put(2,"thanks");
 map.put(3,"how");
 map.containsKey(1);//true
 map.containsKey(5);//false
 map.containsValue("hi");//true
 map.containsValue("hello");//false
补充说明:Map.Entry<K, V> Map 内部实现的用来存放 <key, value> 键值对映射关系的内部类 ,该内部类中主要提供了 <key, value> 的获取, value 的设置以及Key的比较方式。使用Map.Entry类,你可以得到在同一时间得到所有的信息 (注意:Map.Entry<K,V> 并没有提供设置 Key 的方法 )
K getKey()          //返回 entry 中的 key
V getValue()        //返回 entry 中的 value
V setValue(V value) //将键值对中的value替换为指定value

注意:

1. Map 是一个接口,不能直接实例化对象 如果 要实例化对象只能实例化其实现类 TreeMap 或者 HashMap 。

2. Map中存放键值对的Key是唯一的,value是可以重复的 。

3. 在 Map 中插入键值对时, key 不能为空,否则就会抛 NullPointerException 异常 ,但是 value可以为空 。

4. Map中的Key可以全部分离出来,存储到Set

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值