• Java 从入门到进阶之路(二十七)


    在之前的文章我们介绍了一下 Java 中的  集合框架中的Collection,本章我们来看一下 Java 集合框架中的 Map。

    Map 接口定义的集合又称查找表,用于存储所谓“Key-Value”映射对,Key 可以看成是 Value 的索引,作为 Key 的对象在集合中不可以重复。

    根据内部数据结构的不同,Map 接口有多种实现类,其中常用的有内部为 hash 表实现的 HashMap 和内部为排序二叉树实现的 TreeMap,在开发过程中我们常用到的是 Hashmap。

     1 import java.util.HashMap;
     2 import java.util.Map;
     3 
     4 /**
     5  * java.util.Map
     6  * Map 看起来像是一个多行两列的表格
     7  * 以 key-value 对的形式存放元素
     8  * 以 Map 中 key 不允许重复(重复是依靠 key 的 equals 判断)
     9  * 常用的实现类为 HashMap
    10  */
    11 public class Main {
    12     public static void main(String[] args) {
    13         Map<String, Integer> map = new HashMap<String, Integer>();
    14         /**
    15          * V put(K k, V v)
    16          * 将给定的 key-value 对存入 Map
    17          * 顺序不按照给定的顺序排
    18          * 由于 Map 要求 key 不允许重复,所以使用 Map
    19          * 已有的 key 存入一个新的 value 时的操作是
    20          * 替换 value,那么返回值为该 key 原来对应的 value,
    21          * 若是一个新的 key,则返回为 null
    22          */
    23         map.put("语文", 90);
    24         map.put("数学", 93);
    25         map.put("英语", 80);
    26         map.put("化学", 99);
    27         System.out.println(map); // {数学=93, 化学=99, 语文=90, 英语=80}
    28 
    29         Integer value = map.put("物理", 60); // 新 key,返回 null
    30         System.out.println(value); // null
    31         System.out.println(map); // {物理=60, 数学=93, 化学=99, 语文=90, 英语=80}
    32 
    33         value = map.put("语文", 88); // key 相同替换原来的 value
    34         System.out.println(value); // 90
    35         System.out.println(map); // {物理=60, 数学=93, 化学=99, 语文=88, 英语=80}
    36 
    37         /**
    38          * V get(K k)
    39          * 根据给定的 key 获取对应的 value
    40          * 若当前 Map 中没有给定的 key,则返回为 null
    41          */
    42         value = map.get("数学");
    43         System.out.println(value); // 93
    44         value = map.get("生物");
    45         System.out.println(value); // null
    46 
    47         /**
    48          * V remove(K k)
    49          * 删除给定的 key 所对应的 key-value 对
    50          * 返回值为被删除的 key-value 对中的 value
    51          */
    52         value = map.remove("数学");
    53         System.out.println(value); // 93
    54         System.out.println(map); // {物理=60, 化学=99, 语文=88, 英语=80}
    55     }
    56 }

    在上面的代码中,我们实现了 Map 的基本操作增删改查。接下来我们再来看一下 Map 的循环遍历:

     1 import java.util.Collection;
     2 import java.util.HashMap;
     3 import java.util.Map;
     4 import java.util.Set;
     5 
     6 /**
     7  * 遍历 Map
     8  * 遍历 Map 有三种方式:
     9  * 遍历所有的 key
    10  * 遍历所有的 key-value 对
    11  * 遍历所有的 value(相对不常用)
    12  */
    13 public class Main {
    14     public static void main(String[] args) {
    15         Map<String, Integer> map = new HashMap<String, Integer>();
    16         map.put("语文", 90);
    17         map.put("数学", 93);
    18         map.put("英语", 80);
    19         map.put("化学", 99);
    20         System.out.println(map.size()); // 4
    21         System.out.println(map); // {数学=93, 化学=99, 语文=90, 英语=80}
    22 
    23         /**
    24          * 遍历所有的 key
    25          * Set<K> keySet()
    26          * 该方法会将当前 Map 中所有的 key 存入一个Set 集合后返回
    27          * 那么遍历该集合就等于遍历了所有的 key
    28          */
    29         Set<String> keySet = map.keySet();
    30         for (String string : keySet) {
    31             System.out.println(string); // 数学 化学 语文 英语
    32         }
    33 
    34         /**
    35          * 遍历每一组键值对
    36          * Map 中每一组键值对都是由 Map 的内部类:
    37          * java.util.Map.Entry 的一个实例表示的
    38          * Entry 有两个方法:getKey,getValue
    39          * 可以分别获取这一组键值对中的 key 与 value
    40          *
    41          * set<Entry> entrySet
    42          * 该方法会将 Map 中每一组键值对(Entry 实例)
    43          * 存入一个 Set 集合后返回
    44          */
    45         Set<Map.Entry<String, Integer>> entrySet = map.entrySet();
    46         for (Map.Entry<String, Integer> entry : entrySet) {
    47             String key = entry.getKey();
    48             Integer value = entry.getValue();
    49             System.out.println(key + ": " + value); // 数学: 93, 化学: 99, 语文: 90, 英语: 80
    50         }
    51 
    52         /**
    53          * 遍历所有的 value
    54          * Collection values
    55          * 该方法会将当前 Map 中所有的 value 存入一个集合后返回
    56          */
    57         Collection<Integer> values = map.values();
    58         for (Integer value : values) {
    59             System.out.println(value); // 93 99 90 80
    60         }
    61     }
    62 }

    在上面的代码中,我们实现了 Map 的遍历循环。

  • 相关阅读:
    【转】织梦为栏目添加图片的方法
    写在php设计模式前
    memcache 开机启动
    php 列出当前目录
    print echo 的区别
    php 报错等级
    nginx 启动脚本
    centos 编译 安装php
    修改linux iptable规则
    linux yum 安装软件
  • 原文地址:https://www.cnblogs.com/weijiutao/p/12074022.html
Copyright © 2020-2023  润新知