Map的基本功能和遍历

核心代码块:

`package com.wayboo;

import java.util.HashMap;
import java.util.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():返回集合中的键值对的对数
 */
public class MapDemo {
public static void main(String[] args) {
    // 创建集合对象
    Map<String, String> map = new HashMap<String, String>();
    
    // 添加元素
    // V put(K key,V value):添加元素。这个其实还有另一个功能
    //如果第一次添加时,该键不存在,就存储键值对元素
      //如果该键纯在,就把值替换,返回前一个值。
    // System.out.println("put:" + map.put("文章", "马伊俐"));
    // System.out.println("put:" + map.put("文章", "姚笛"));

    map.put("邓超", "孙俪");
    map.put("黄晓明", "杨颖");
    map.put("周杰伦", "蔡依林");
    map.put("刘恺威", "杨幂");

    // void clear():移除所有的键值对元素
    // map.clear();

    // V remove(Object key):根据键删除键值对元素,并把值返回
    // System.out.println("remove:" + map.remove("黄晓明"));
    // System.out.println("remove:" + map.remove("黄晓波"));

    // boolean containsKey(Object key):判断集合是否包含指定的键
    //判断不影响集合
    // System.out.println("containsKey:" + map.containsKey("黄晓明"));
    // System.out.println("containsKey:" + map.containsKey("黄晓波"));

    // boolean isEmpty():判断集合是否为空
    // System.out.println("isEmpty:"+map.isEmpty());
    
    //int size():返回集合中的键值对的对数
    System.out.println("size:"+map.size());

    // 输出集合名称
    System.out.println("map:" + map);
    }
}`

获取功能:

 package com.wayboo;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/*
 * 获取功能:
 * V get(Object key):根据键获取值
 * Set<K> keySet():获取集合中所有键的集合
 * Collection<V> values():获取集合中所有值的集合
 */
public class MapDemo2 {
public static void main(String[] args) {
    // 创建集合对象
    Map<String, String> map = new HashMap<String, String>();

    // 创建元素并添加元素
    map.put("邓超", "孙俪");
    map.put("黄晓明", "杨颖");
    map.put("周杰伦", "蔡依林");
    map.put("刘恺威", "杨幂");

    // V get(Object key):根据键获取值
    System.out.println("get:" + map.get("周杰伦"));
    System.out.println("get:" + map.get("周杰")); // 返回null
    System.out.println("----------------------");

    // Set<K> keySet():获取集合中所有键的集合
    Set<String> set = map.keySet();
    for (String key : set) {
        System.out.println(key);
    }
    System.out.println("----------------------");

    // Collection<V> values():获取集合中所有值的集合
    Collection<String> con = map.values();
    for (String value : con) {
        System.out.println(value);
        }
    }
}

//

package com.wayboo;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/*
 * Map集合的遍历。
 * Map -- 夫妻对
 * 思路:
 *      A:把所有的丈夫给集中起来。
 *      B:遍历丈夫的集合,获取得到每一个丈夫。
 *      C:让丈夫去找自己的妻子。
 * 
 * 转换:
 *      A:获取所有的键
 *      B:遍历键的集合,获取得到每一个键
 *      C:根据键去找值
 */
public class MapDemo3 {
public static void main(String[] args) {
    // 创建集合对象
    Map<String, String> map = new HashMap<String, String>();

    // 创建元素并添加到集合
    map.put("杨过", "小龙女");
    map.put("郭靖", "黄蓉");
    map.put("杨康", "穆念慈");
    map.put("陈玄风", "梅超风");

    // 遍历
    // 获取所有的键
    Set<String> set = map.keySet();
    // 遍历键的集合,获取得到每一个键
    for (String key : set) {
          //增强for
        // 根据键去找值
        String value = map.get(key);
        System.out.println(key + "---" + value);
        }
    }
}

//

 package com.wayboo;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/*
 * Map集合的遍历。
 * Map -- 夫妻对
 * 
 * 思路:
 *      A:获取所有结婚证的集合
 *      B:遍历结婚证的集合,得到每一个结婚证
 *      C:根据结婚证获取丈夫和妻子
 * 
 * 转换:
 *      A:获取所有键值对对象的集合
 *      B:遍历键值对对象的集合,得到每一个键值对对象
 *      C:根据键值对对象获取键和值
 * 
 * 这里面最麻烦的就是键值对对象如何表示呢?
 * 看看我们开始的一个方法:
 *      Set<Map.Entry<K,V>> entrySet():返回的是键值对对象的集合
 */
public class MapDemo4 {
public static void main(String[] args) {
    // 创建集合对象
    Map<String, String> map = new HashMap<String, String>();

    // 创建元素并添加到集合
    map.put("杨过", "小龙女");
    map.put("郭靖", "黄蓉");
    map.put("杨康", "穆念慈");
    map.put("陈玄风", "梅超风");

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值