zoukankan      html  css  js  c++  java
  • Map集合

    在Map里面每一次可以存放两个对象,所有的对象按照“key = value”的形式保存。也就是说通过key可以找到对应的value。

    Collection存放数据的目的是为了输出,而Map存放数据的目的是为了查找。

    在java.util中Map接口里面定义的方法如下:

    public V put(K key, V value) 普通 向Map集合之中保存数据
    public V get(Object key) 普通 根据key取得对应的value数据
    public boolean containsKey(Object key) 普通 判断key是否存在
    public Set<Map.Entry<K,V>> entrySet() 普通 将Map集合转为Set集合
    public Set<K> keySet() 普通 取得所有的key

    根据以上的方法实际上就可以得出一结论:在Map集合之中如果要保存数据,那么数据的key一定不可能重复,如果真发生了重复,那么将会出现覆盖的情况。

    在使用Map接口的时候比较常用的两个子类:HashMap、Hashtable、TreeMap(根据key排序)。

     1 package cn.test;
     2 
     3 import java.util.HashMap;
     4 import java.util.Map;
     5 
     6 public class TestLocal{
     7     public static void main(String[] args) {
     8         Map<String,String> map = new HashMap<String,String>();
     9         map.put("李洋", "好孩子");
    10         map.put("张哲", "美女");
    11         map.put("詹秉承", "二货");
    12         map.put(null, "空");
    13         map.put("空", null);
    14         map.put(null, null);
    15         map.put("庞涵", "单身狗");
    16     System.out.println(map);
    17     System.out.println(map.get("李洋"));
    18     System.out.println(map.get("李扣"));
    19     }
    20 }

    结果:

    {null=null, 李洋=好孩子, 张哲=美女, 詹秉承=二货, 空=null, 庞涵=单身狗}
    好孩子
    null

    总结:只允许存放一个null的key信息,因为会出现覆盖的情况。

      在整个过程之中你可以明显的发现,如果存在的key进行查找则返回对应的value,如果不存在的key查找时返回的就是null。

    2、Iterator输出Map(核心

    给出Map如何使用Iterator输出的操作步骤:

    · 利用Map接口中的entrySet()方法将Map集合变为Set集合;

    · Set接口之中提供有iterator()方法,可以利用此方法将Set集合使用Iterator输出;

    · 利用Iterator迭代后取出每一个的Map.Entry对象,并且进行key与value的分离。

     1 package cn.test;
     2 
     3 import java.util.Iterator;
     4 import java.util.Map;
     5 import java.util.Set;
     6 import java.util.TreeMap;
     7 
     8 public class TestLocal{
     9     public static void main(String[] args) {
    10         Map<String,String> map = new TreeMap<String,String>();
    11         map.put("liyang", "好孩子");
    12         map.put("zhangzhe", "美女");
    13         map.put("zhancheng", "二货");
    14         map.put("panghan", "单身狗");
    15         Set<Map.Entry<String,String>> set = map.entrySet();
    16         Iterator<Map.Entry<String,String>> iter = set.iterator();
    17         while(iter.hasNext()){
    18             Map.Entry<String, String> me = iter.next();
    19             System.out.println(me.getKey() + " = " + me.getValue());
    20         }
    21     }
    22 }

    结果:

    liyang = 好孩子
    panghan = 单身狗
    zhancheng = 二货
    zhangzhe = 美女

    在以后的开发之中,虽然主要的输出模式都是利用Collection完成,但是并不意味着不使用Map输出。

  • 相关阅读:
    洛谷P1023 税收与补贴问题
    洛谷P2680 运输计划
    2014-11-3 NOIP模拟赛3
    一行Python代码就可以玩一些童年小游戏
    NuGet(微软.NET开发平台的软件包管理工具)在VisualStudio中的安装的使用
    Winform中实现序列化指定类型的对象到指定的Xml文件和从指定的Xml文件中反序列化指定类型的对象
    Electron中打开和关闭子窗口以及子窗口向父窗口传值
    Electron中实现通过webview实现内嵌网页并嵌入css样式和js脚本等
    Electron中实现拖拽文件进div中通过File对象获取文件的路径和内容
    Electron中通过process进程对象的api获取CPU、系统位数、环境变量等相关信息
  • 原文地址:https://www.cnblogs.com/liyang31/p/5819836.html
Copyright © 2011-2022 走看看