Java基础:Map集合、Map集合常用子类与常用方法、Map集合遍历键值对的方式

Map集合概述

java.util.Map<k,v>集合
Map集合的特点:

  • 1.Map集合是一个双列集合,一个元素包含两个值(一个key,一个value)
  • 2.Map集合中的元素,key和value的数据类型可以相同,可以不同
  • 3.Map集合中的元素,key是不允许重复的,value是可以重复的
  • 4.Map集合中的元素,key和value是一一对应的

Map集合常用子类

java.util.HashMap<k,v>集合 implements Map<k,v>接口
HashMap集合的特点:

  • 1.HashMap集合底层是哈希表:查询的速度特别快
  •   JDK1.8之前:数组+单链表
    
  •   JDK1.8之后:数组+单向链表/红黑树(链表长度超过8):提高查询的速度
    
  • 2.HashMap集合是一个无序的集合,存储元素和取出元素的顺序有可能不一致

java.util.LinkedHashMap<k,v>集合 extends Map<k,v> 集合

  • LinkedHashMap的特点:
  • 1.LinkedHashMap集合底层是哈希表+链表(保证迭代的顺序)
  • 2.LinkedHashMap集合是一个有序的集合,存储元素和取出元素的顺序是一致的

Map接口的常用方法

常用Map接口的方法:
1.public V put(K key,V value): 把指定的键与指定的值添加到Map集合中
返回值:V

  • 存储键值对的时候,key不重复,返回值v是null
  • 存储键值对的时候,key重复,会使用新的value替换map中重复的value,返回被替换的value值

2.boolean containsKey(Object key)判断集合中是否包含指定的键。
包含返回true,不包含返回false

3.public V get(Object key) 根据指定的键,在Map集合中获取对应的值
返回值 V

  • key存在,v返回对应的值
  • key不存在,v返回null

4.public V remove(Object key):把指定的键,所对应的键值对元素,在Map集合中删除,返回被删除的元素
返回值 V

  • key存在,v返回被删除的值
  • key不存在,v返回null
public class Demo01Map {
    public static void main(String[] args) {
        method2();
    }
/*常用Map接口的方法:
        boolean containsKey(Object key)判断集合中是否包含指定的键。
            包含返回true,不包含返回false
    *   public V get(Object key) 根据指定的键,在Map集合中获取对应的值
    *      返回值 V
     *          key存在,v返回对应的值
     *          key不存在,v返回null
    *   public V remove(Object key):把指定的键,所对应的键值对元素,在Map集合中删除,返回被删除的元素
    *      返回值 V
    *           key存在,v返回被删除的值
    *           key不存在,v返回null   */
    private static void method2() {
        Map<String,String> map2 = new HashMap<>();
        map2.put("喵喵喵","猫猫");
        map2.put("哼哼哼","猪猪");
        map2.put("哈哈哈","狗狗");
        System.out.println(map2);
        String r2 = map2.remove("喵喵喵");
        System.out.println("被删除的是:"+r2);
        System.out.println(map2);
        String g2 = map2.get("哈哈哈");
        System.out.println(g2);
        boolean c2 = map2.containsKey("喵喵喵");
        boolean c3 = map2.containsKey("哼哼哼");
        System.out.println(c2);
        System.out.println(c3);
    }
    /*常用Map接口的方法:
*       public V put(K key,V value): 把指定的键与指定的值添加到Map集合中
*        返回值:V
*           存储键值对的时候,key不重复,返回值v是null
*           存储键值对的时候,key重复,会使用新的value替换map中重复的value,返回被替换的value值  */
    private static void method1() {
        //创建Map集合对象,多态
        Map<String,String> map1 = new HashMap<>();
        String v1 = map1.put("汪汪汪","猫");
        System.out.println("v1:"+v1);
        String v2 = map1.put("汪汪汪","狗狗");
        System.out.println("v2:"+v2);
        System.out.println(map1);
        map1.put("喵喵喵","猫猫");
        map1.put("哼哼哼","猪猪");
        map1.put("哈哈哈","狗狗");
        System.out.println(map1);
    }
}

Map集合遍历键值对的方式

在这里插入图片描述
Map集合的第一种遍历方式:通过键找值的方式
Map集合中的方法:

  • Set keySet() 返回此映射中包含的键的Set视图。

实现步骤:

  • 1.使用Map集合中的方法keySet(),把Map集合中所有的key取出来,存储到一个Set集合中
  • 2.遍历Set集合,获取Map集合中的每一个key
  • 3.通过Map集合中的方法get(key),通过key找到value
package demo;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class Demo02KeySet {
    public static void main(String[] args) {
        Map<String,Integer> map = new HashMap<>();
        map.put("康师傅",5);
        map.put("白象",4);
        map.put("熊义武",6);
        //  1.使用Map集合中的方法keySet(),把Map集合中所有的key取出来,存储到一个Set集合中
        Set<String> set = map.keySet();
        //  2.遍历Set集合,获取Map集合中的每一个key
        Iterator<String> it = set.iterator();
        //  3.通过Map集合中的方法get(key),通过key找到value
        while (it.hasNext()){
            String key = it.next();
            Integer value = map.get(key);
            System.out.println(key+value);
        }
        //使用增强for
        for (String key:set) {
            System.out.println(key+map.get(key));
        }
    }
}

在这里插入图片描述

Map集合遍历的第二种方式:使用Entry对象遍历
Map集合中的方法:
Set<Map.Entry<K,V>> entrySet() 返回此映射中包含的映射关系的Set视图
实现步骤:

  • 1.使用Map集合中的方法entrySet(),把Map集合中多个Entry对象取出来,存储到一个Set集合中
  • 2.遍历Set集合,获取每一个Entry对象
  • 3.使用Entry对象中的方法getKey()和getValue()获取键值*/
package demo;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class Demo03EntrySet {
    public static void main(String[] args) {
        //创建Map对象
        Map<String,Integer> map = new HashMap<>();
        map.put("康师傅",5);
        map.put("白象",4);
        map.put("熊义武",6);
        //把entry类型的值给到Set
        Set<Map.Entry<String, Integer>> set = map.entrySet();
        Iterator<Map.Entry<String, Integer>> it = set.iterator();
        while (it.hasNext()){
            Map.Entry<String, Integer> en = it.next();
            System.out.println(en.getKey()+en.getValue());
        }
        for (Map.Entry<String,Integer> entry:set) {
            String key = entry.getKey();
            Integer value = entry.getValue();
            System.out.println(key+value);
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值