• java 18 -1 Map的集合


      作为学生来说,是根据学号来区分不同的学生的,那么假设我现在已经知道了学生的学号,我要根据学号去获取学生姓名,请问怎么做呢?

      如果采用前面讲解过的集合,我们只能把学号和学生姓名作为一个对象的成员,然后存储整个对象,将来遍历的时候,判断,获取对应的名称。
      但是呢,如果我都能把学生姓名拿出来了,我还需要根据编号去找吗?
      针对我们目前的这种需求:仅仅知道学号,就想知道学生姓名的情况,Java就提供了一种新的集合 Map。
      通过查看API,我们知道Map集合的一个最大的特点,就是它可以存储键值对的元素。这个时候存储我们上面的需求,就可以这样做
          学号1 姓名1
          学号2 姓名2
          学号3 姓名3
          学号2(不行)姓名4
          学号4 姓名4
      Map集合的特点:
          将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。

      Map集合和Collection集合的区别?
          Map集合存储元素是成对出现的,Map集合的键是唯一的,值是可重复的。可以把这个理解为:夫妻对
          Collection集合存储元素是单独出现的,Collection的儿子Set是唯一的,List是可重复的。可以把这个理解为:光棍(11.11)

      注意:
          Map集合的数据结构值针对键有效,跟值无关
          HashMap,TreeMap等会讲。
          Collection集合的数据结构是针对元素有效

      Map集合的功能概述:
        1:添加功能
          V put(K key,V value):添加元素。这个其实还有另一个功能
          如果键是第一次存储,就直接存储元素,返回null
          如果键不是第一次存在,就用值把以前的值替换掉,返回以前的值
        2:删除功能
          void clear():移除所有的键值对元素
          V remove(Object key):根据键删除键值对元素,并把值返回
        3:判断功能
          boolean containsKey(Object key):判断集合是否包含指定的键
          boolean containsValue(Object value):判断集合是否包含指定的值
          boolean isEmpty():判断集合是否为空
        4:获取功能
          Set<Map.Entry<K,V>> entrySet():???
            V get(Object key):根据键获取值
          Set<K> keySet():获取集合中所有键的集合
            Collection<V> values():获取集合中所有值的集合
        5:长度功能
          int size():返回集合中的键值对的对数

     1 package map_son;
     2 
     3 import java.util.Collection;
     4 import java.util.HashMap;
     5 import java.util.Map;
     6 import java.util.Set;
     7 
     8 public class MapDemo1 {
     9 
    10     public static void main(String[] args) {
    11         
    12         // 首先创建一个map集合
    13         Map<String ,String> m = new HashMap<String,String>();
    14         
    15         //1:添加功能    V put(K key,V value):添加元素。这个其实还有另一个功能
    16         //如果键是第一次存储,就直接存储元素,返回null,如果键不是第一次存在,就用值把以前的值替换掉,返回以前的值
    17         m.put("孙悟空","齐天大圣");
    18         m.put("唐僧", "功德佛");
    19         m.put("猪八戒", "净坛使者");
    20         m.put("沙僧", "金身罗汉");
    21         m.put("白龙马", "八部天龙");
    22         m.put("孙悟空","斗战胜佛");
    23         
    24         System.out.println(m);//{白龙马=八部天龙, 沙僧=金身罗汉, 孙悟空=斗战胜佛, 猪八戒=净坛使者, 唐僧=功德佛}    
    25         //第一个和最后一个的键值都是孙悟空,键值一样,后面的值会替换掉前面的,所以打印出的是孙悟空=斗战胜佛
    26         System.out.println("-----------------");
    27         
    28         //2:删除功能    void clear():移除所有的键值对元素      
    29         //m.clear();
    30         //System.out.println(m);//{}
    31         
    32         //2:删除功能    V remove(Object key):根据键删除键值对元素,并把值返回
    33         m.remove("白龙马");
    34         System.out.println(m);//{沙僧=金身罗汉, 孙悟空=斗战胜佛, 猪八戒=净坛使者, 唐僧=功德佛}
    35         System.out.println("-----------------");
    36         
    37         //3:判断功能   boolean containsKey(Object key):判断集合是否包含指定的键
    38           System.out.println(m.containsKey("猪八戒"));//true
    39         
    40           //3:判断功能   boolean containsValue(Object value):判断集合是否包含指定的值
    41           System.out.println(m.containsValue("斗战胜佛"));//true
    42           System.out.println(m.containsValue("八部天龙"));//false ,因为之前把他删了,所以现在没有了
    43         
    44           //3:判断功能   boolean isEmpty():判断集合是否为空
    45           System.out.println(m.isEmpty());//false
    46           
    47           //4:获取功能  V get(Object key):根据键获取值
    48           System.out.println(m.get("孙悟空"));//斗战胜佛
    49           
    50           //4:获取功能  Set<K> keySet():获取集合中所有键的集合
    51           Set<String> s = m.keySet();
    52           for(String ss : s){
    53               System.out.println(ss);//沙僧   孙悟空  猪八戒  唐僧 //白龙马之前删了
    54           }
    55           
    56           //4:获取功能  Collection<V> values():获取集合中所有值的集合
    57           Collection<String> s1 = m.values();
    58           for(String ss1 : s1){
    59               System.out.println(ss1);//金身罗汉  斗战胜佛  净坛使者    功德佛 //白龙马的之前删了
    60           }
    61           
    62           //5:长度功能   int size():返回集合中的键值对的对数
    63           System.out.println(m.size()); //4 
    64     }
    65 
    66 }
    何事都只需坚持.. 难? 维熟尔。 LZL的自学历程...只需坚持
  • 相关阅读:
    一个很吊的swing循环生成窗口。
    hbase操作的问题
    hadoop+hbase
    linux故障救援
    管道命令xargs
    hadoop浅尝 hadoop与hbase交互
    linux源代码阅读笔记 free_page_tables()分析
    词法分析器flex的使用
    每天一个Linux命令(1): find
    梯度下降
  • 原文地址:https://www.cnblogs.com/LZL-student/p/5907173.html
Copyright © 2020-2023  润新知