集合6 - HashMap

HashMap

Hash -- Hash算法根据key计算hash函数来存放数据、处理冲突(链地址法-红黑二叉树) => 无序存储,重复丢弃

Map -- 键值对<key, value>中key是唯一的,作为value的索引

基本操作

public class Map {
    public static void main(String[] args) {

        //TODO Collection HashMap
        //HashMap = Hash(Hash算法) + Map(键值对)
        //由于Hash算法的特性 => 无序存储,重复丢弃
        //Hash算法根据key计算索引 -- 判断是否相同
        HashMap<String,String> map = new HashMap<String,String>();

        //TODO .put() 添加数据
        map.put("hihi","A");
        map.put("hehe","B");
        map.put("hoho","C");
        map.put("haha","D");
        map.put("haha","D");
        //key值相同value相同,重复数据丢弃
        System.out.println(map.put("haha", "W"));
        //key值相同value不同,覆盖value值,返回旧值

        //TODO .putIfAbsent() 只添加数据,相同的key不进行覆盖
        System.out.println(map.putIfAbsent("haha", "I"));
        //添加失败,返回对应key值已有数据的value

        //TODO .get() 查询数据
        //传入key返回value
        System.out.println(map.get("haha"));

        //TODO .replace() 修改数据
        System.out.println(map.replace("hehe", "Q"));//返回旧value
        System.out.println(map.replace("tttt", "Q"));//key值不存在返回null

        //TODO .clear() 清空数据

        //TODO .keySet() 获取所有的key,返回Set集合 => 数据不能重复
        Set set = map.keySet();
        System.out.println(set);
        //根据key集合遍历打印所有value
        for (Object o : set) {
            System.out.println(map.get(o));
        }
        //TODO .values() 获取所有value,返回Collection集合 => 数据可重复
        Collection values = map.values();
        for (Object value : values) {
            System.out.println(value);
        }

        //TODO .containsKey() 判断是否存在指定key
        System.out.println(map.containsKey("haha"));

        //TODO .containsValue() 判断是否存在指定value
        System.out.println(map.containsValue("A"));

        //TODO .entrySet() 获取键值对对象 Entry -- 内部接口类
        Set<java.util.Map.Entry<String, String>> entries = map.entrySet();
        //整体打印 -- 数组形式
        System.out.println(entries);
        //遍历打印 -- .getKey() .getValue() 获取每一个对象的key和value
        for (java.util.Map.Entry<String, String> entry : entries) {
            System.out.println(entry.getKey() + "=" + entry.getValue());
        }

        //TODO .remove() 删除数据 传入key值删除整个键值对
        System.out.println(map.remove("hehe")); //返回删除键值对的value
        //传入key+value  删除键值对的key和value必须都符合参数 成功返回true 失败返回false
        System.out.println(map.remove("haha", "a"));

        System.out.println(map);
        
    }
}
posted @   LaViez  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
点击右上角即可分享
微信分享提示