前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >映射(Map)

映射(Map)

作者头像
星哥玩云
发布2022-09-14 20:15:35
发布2022-09-14 20:15:35
67400
代码可运行
举报
文章被收录于专栏:开源部署开源部署
运行总次数:0
代码可运行

1、Map概述

Map接口中键和值一一映射. 可以通过键来获取值。

给定一个键和一个值,你可以将该值存储在一个Map对象之后,你可以通过键来访问对应的值。

2、HashMap类

HashMap也用到了哈希码的算法,以便快速查找一个键,它根据键的hashCode值存储数据,大多数情况下可以直接定位到它的值,因而具有很快的访问速度,但遍历顺序却是不确定的。 HashMap最多只允许一条记录的键为null,允许多条记录的值为null。HashMap非线程安全,即任一时刻可以有多个线程同时写HashMap,可能会导致数据的不一致。

代码语言:javascript
代码运行次数:0
运行
复制
import java.util.HashMap;

public class MapDemo01 {
    public static void main(String[] args) {
        // Map不同于List,它的key不一定是数字
        HashMap map = new HashMap();
        map.put("Java讲义",109);
        map.put("python讲义",10);
        map.put("前端讲义",79);

        // 如果新的value覆盖了原有的value,该方法返回被覆盖的value
        System.out.println(map.put("python讲义",99)); // 输出10
        System.out.println(map);

        // 判断是否包含指定key
        System.out.println("是否包含值为python讲义key:"+map.containsKey("python讲义"));
        System.out.println("是否包含值为99 value:"+map.containsValue(99));

        // 遍历map
        for (Object key : map.keySet()) {
            System.out.println(key+"-->"+map.get(key));
        }
    }
}

根据键查询值

代码语言:javascript
代码运行次数:0
运行
复制
import java.util.HashMap;
import java.util.Set;
/**
 * Map集合的遍历,根据键查询值
 *
 * 思路:
 * A:获取所有的键
 * B:遍历键的集合,获取得到每一个键
 * C:根据键查询值
 * */
public class MapDemo02 {
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        HashMap<String, String> map = new HashMap<String, String>();

        map.put("hello", "world");
        map.put("java", "c++");
        map.put("sql", "os");

        System.out.println(map);

        // A:获取所有的键
        Set<String> set = map.keySet();

        // B:遍历键的集合,获取得到每一个键
        for (String key : set) {
            // C:根据键查询值
            String value = map.get(key);
            System.out.println(key + "---" + value);
        }
    }
}

根据键值对的对象查询键和值

代码语言:javascript
代码运行次数:0
运行
复制
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/**
 * Map集合的遍历,根据对象查询键和值
 *
 * 思路:
 * A:获取所有的键值对对象的集合
 * B:遍历键值对对象的集合,得到每一个键值对的对象
 * C:获取键和值
 * */
public class MapDemo03 {
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        HashMap<String, String> map = new HashMap<String, String>();

        map.put("hello", "world");
        map.put("java", "c++");
        map.put("sql", "os");

        System.out.println(map);

        // A:获取所有的键值对对象的集合
        Set<Map.Entry<String, String>> set = map.entrySet();

        // B:遍历键值对对象的集合,得到每一个键值对的对象
        for (Map.Entry<String, String> me : set) {
            // C:获取键和值
            String key = me.getKey();
            String value = me.getValue();
            System.out.println(key + "---" + value);
        }
    }
}

3、TreeMap类

TreeMap则是对键按序存放,因此它便有一些扩展的方法,比如firstKey(),lastKey()等,你还可以从TreeMap中指定一个范围以取得其子Map。 键和值的关联很简单,用put(Object key,Object value)方法即可将一个键与一个值对象相关联。用get(Object key)可得到与此key对象所对应的值对象。

代码语言:javascript
代码运行次数:0
运行
复制
import java.util.Set;
import java.util.TreeMap;

public class MapDemo04{
    public static void main(String[] args) {
        TreeMap<String, String> map = new TreeMap<String, String>();

        //插入键值对
        map.put("bkey", "bvalue");
        map.put("dkey", "dvalue");
        map.put("ckey", "cvalue");
        map.put("akey", "avalue");

        //获取键值Set
        Set<String> keySet = map.keySet();
        //将键值Set转成数组
        Object[] keyArray = keySet.toArray();
        //按照键值依序获取值对象
        for (int i = 0; i < keyArray.length; i++)
            System.out.println("key=" + (String) keyArray[i] + "; value=" + map.get((String) keyArray[i]));
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、Map概述
  • 2、HashMap类
  • 3、TreeMap类
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档