java基础之Map集合的使用

本文详细介绍了Java中Map接口的基本概念及其常用实现类HashMap、TreeMap和HashTable的特点。此外,还探讨了如何确保Map中键的唯一性,并提供了遍历HashMap的具体方法。
public class Pm {

    /**
     * Map<k,v>:映射,键值对
     * 一个映射不能包含重复的值,每个键最多只能映射到一个值
     * k--Key
     * V--Value
     * 1、containsKey(Object key) 查询是否含有该键
     * 2、containValue(Object value)查询是否含有该值
     * 3、get(Object key)通过键查询值
     * 4、put(k key,V Value)添加
     * 5、putAll(Map<? extends k,? extends V> m) 添加
     * 6、V remove(Object key) 删除映射的同时会拿到该映射的Value值
     * 7、Collection<V> values() 拿到由该Map中的值所组成的集合
     * 8、replcae(K key , V value) 修改该映射
     * 
     * 
     * Map
     * |---HashMap:底层是哈希表,null可以作为键或值,是线程不同步(运行效率高)
     * |---TreeMap:底层是二叉树结构,会进行一个排序,是线程不同步的(运行效率高)
     * |---HashTable:底层是哈希表,null不能作为键或者值,是线程同步的(运行效率低)
     * 
     * 需求:遍历一个HashMap
     * 特殊方法:
     * 1Set<> keySet() 将map中所有的键取出并存入一个Set集合中
     * 2Set<Map.Entry<K,V> entrySet() 将map中的映射关系取出并存入一个set集合中
     *    Map.Entry<K,V>值得是一组键值对
     *    
     *    map是如何保证唯一性的:通过hashCode()和equals()两个方法同时的决定
     * 需求:有5个学生,将学会的姓名(String name)、地址(String address)存放进map中,形成映射
     * 当学生的姓名年龄同时相等时,这时同一个学生,不存
     * 
     * 当自己创建的类生成的对象生成的key作为存放进map的时候,需要重写hashCode()和equals()方法
     * 指定规则:什么时候键重复
     */


    public static void main(String[] args) {
        Map<String,String> map=new HashMap<String, String>();
        //map保证唯一性前提是会对Key进行是否存在的判断,而后决定是先移除再添加还是直接添加
        map.put("abc", "学生");
        map.put("abc", "老师");
        map.replace("abc", "工人");
        map.put("abc1", "1");
        map.put("abc2", "2");
        map.put("abc3", "3");
        map.put("abc4", "4");

        //keySet
        /*Set<String> set=map.keySet();
        Iterator<String> iterator=set.iterator();
        while (iterator.hasNext()) {
            String key=iterator.next();
            System.out.println(key+"对应"+map.get(key));
        }*/

        //entrySet()
        Set<Map.Entry<String, String>> set=map.entrySet();
        Iterator<Map.Entry<String, String>> iterator=set.iterator();
        while (iterator.hasNext()) {
            Map.Entry<String, String> entry=iterator.next();
            System.out.println(entry.getKey()+"对应"+entry.getValue());
        }



    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有头发的猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值