zoukankan      html  css  js  c++  java
  • Map.Entry

    Module java.base
    Package java.util
    Interface Map.Entry
    <K,​V> All Known Implementing Classes: AbstractMap.SimpleEntry, AbstractMap.SimpleImmutableEntry
    Enclosing
    interface: Map<K,​V>
    public static interface Map.Entry<K,​V> A map entry (key-value pair). The Map.entrySet method returns a collection-view of the map, whose elements are of this class. The only way to obtain a reference to a map entry is from the iterator of this collection-view. These Map.Entry objects are valid only for the duration of the iteration; more formally, the behavior of a map entry is undefined if the backing map has been modified after the entry was returned by the iterator, except through the setValue operation on the map entry.
    Since:
    1.2

    See Also: Map.entrySet()

    示例:

    import java.util.Map;
    
    public class IteratorDemo {
        public static void main(String[] args) {
            Map.Entry<String, Integer> entry = Map.entry("one", 1);
            System.out.println("Key=" + entry.getKey());
            System.out.println("Value=" + entry.getValue());
            System.out.println(entry);
            System.out.println(entry.getClass().getName());
        }
    }

    运行结果:

    Key=one
    Value=1
    one=1
    java.util.KeyValueHolder

    经过分析可以发现:如果想要使用Iterator实现Map集合的输出,则必须按照如下步骤处理:

    • 利用Map接口中提供的entrySet()方法将Map集合转为Set集合;
    • 利用Set接口中的iterator()方法将Set集合转为Iterator接口实例;
    • 利用Iterator进行迭代输出,获取每一组的Map.Entry对象,随后通过getKey()和getValue()方法获取数据。

    示例:利用Iterator输出Map集合

    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Map;
    import java.util.Set;
    
    public class IteratorDemo {
        public static void main(String[] args) {
            Map<String, Integer> map = new HashMap<String, Integer>();
            map.put("one", 1);
            map.put("two", 2);
            map.put("three", 3);
            Set<Map.Entry<String, Integer>> set = map.entrySet();//将Map集合转为Set集合
            Iterator<Map.Entry<String, Integer>> iter = set.iterator();//将Set集合转为Iterator接口实例
            while (iter.hasNext()) {
                Map.Entry<String, Integer> me = iter.next();//获取每一组的Map.Entry对象
                System.out.println(me.getKey() + "=" + me.getValue());
            }
        }
    }

    运行结果:

    one=1
    two=2
    three=3

      虽然Map集合本身支持迭代输出,但是如果从实际的开发来讲,Map集合最主要的用法在于实现数据的key查找操作。另外需要提醒的是,如果现在不使用Iterator而使用forEach语法输出,也需要将Map集合转为Set集合。

    示例:使用forEach输出Map集合

    import java.util.HashMap;
    import java.util.Map;
    import java.util.Set;
    
    public class IteratorDemo {
        public static void main(String[] args) {
            Map<String, Integer> map = new HashMap<String, Integer>();
            map.put("one", 1);
            map.put("two", 2);
            map.put("three", 3);
            Set<Map.Entry<String, Integer>> set = map.entrySet();//将Map集合转为Set集合
            for(Map.Entry<String, Integer> entry: set) {
                System.out.println(entry.getKey()+"="+entry.getValue());
            }
        }
    }

    运行结果:

    one=1
    two=2
    three=3
  • 相关阅读:
    矩阵乘法的应用
    Link-Cut-Tree
    花里胡哨的代用记号与三标符(转载)
    (扩展)中国剩余定理
    C++ 中的转义字符 “”
    Excel VBA to Interact with Other Applications
    hive表数据导出到csv乱码原因及解决方案
    一道简单的sql语句题,http://mp.weixin.qq.com/s/wqRPFtSUAy5OzLlP69QCSA
    Hive系列之HSQL转换成MapReduce过程 ,http://www.jianshu.com/p/660fd157c5eb
    Hive SQL的编译过程[转载自https://tech.meituan.com/hive-sql-to-mapreduce.html]
  • 原文地址:https://www.cnblogs.com/sunzhongyu008/p/11232370.html
Copyright © 2011-2022 走看看