Java Map集合

Java Map集合,第1张

Java Map集合

Map集合概述和使用

  • Map集合是一种双列集合,每个元素包含两个数据。
  • Map集合的每个元素的格式:key=value(键值对元素)。
  • Map集合也被称为“键值对集合”。

Map集合整体格式:

  • Collection集合的格式:[元素1,元素2,元素3..]
  • Map集合的完整格式:{key1=value1 , key2=value2 , key3=value3 , ...}

使用场景:Map集合非常适合做类购物车这样的业务场景。

Map集合体系特点

  • Map集合的特点都是由键决定的。
  • Map集合的键是无序,不重复的,无索引的,值不做要求(可以重复)。
  • Map集合后面重复的键对应的值会覆盖前面重复键的值。
  • Map集合的键值对都可以为null。
import java.util.HashMap;
import java.util.linkedHashMap;
import java.util.Map;

public class MapDemo {
    public static void main(String[] args) {
//        Map maps = new HashMap<>();
        Map maps = new linkedHashMap<>();
        maps.put("鸿星尔克",3);
        maps.put("java",100);
        maps.put("mysql",44);
        maps.put("html",100);
        maps.put("java",1);
        maps.put(null,null);
//        System.out.println(maps);//HashMap  {null=null, java=1, mysql=44, html=100, 鸿星尔克=3}
        System.out.println(maps);//linkedHashMap   {鸿星尔克=3, java=1, mysql=44, html=100, null=null}
    }
}

Map集合实现类特点

  • HashMap:元素按照键是无序,不重复,无索引,值不做要求。(与Map体系一致)
  • linkedHashMap:元素按照键是有序,不重复,无索引,值不做要求。
  • TreeMap:元素按照键是有序,不重复,无索引的,值不做要求。

Map集合常用API

方法名称

说明

V put(K key,V value)

添加元素

V remove(Object key)

根据键删除键值对元素

void clear()

移除所有的键值对元素

boolean containsKey(Object key)

判断集合是否包含指定的键

boolean containsValue(Object value)

判断集合是否包含指定的值

boolean isEmpty()

判断集合是否为空

int size()

集合的长度,也就是集合中键值对的个数

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

public class MapDemo2 {
    public static void main(String[] args) {
        // 1.添加元素:无序,不重复,无索引。
        Map maps = new HashMap<>();
        maps.put("iphoneX",10);
        maps.put("娃娃",20);
        maps.put("iphoneX",100); // Hap集合后面重复的键对应的元素会覆盖前面重复的整个元素!
        maps.put( "huawei" ,100);
        maps.put("生活用品",10);
        maps.put("手表",10);
        System.out.println(maps);//{huawei=100, 手表=10, 生活用品=10, iphoneX=100, 娃娃=20}

        //2、清空集合
//        maps.clear();
//        System.out.println(maps); //{}

        //3、判断集合是否为空,为空返回true,反之!
        System.out.println(maps.isEmpty());

        //4、根据键获取对应的值
        Integer key = maps.get("huawei");
        System.out.println(key); //100
        System.out.println(maps.get("生活用品")); //10
        System.out.println(maps.get("生活用品2")); //null

        //5、根据键删除整个元素。(删除键会返回键的值)
        System.out.println(maps.remove("iphoneX"));
        System.out.println(maps);

        //6、判断是否包含某个键,包含返回true,反之!
        System.out.println(maps.containsKey("娃娃"));//true
        System.out.println(maps.containsKey("娃娃2"));//false
        System.out.println(maps.containsKey("iphoneX"));//false  因为前面删掉了

        //7、判断是否包含某个值。
        System.out.println(maps.containsValue(100));//true
        System.out.println(maps.containsValue(10));//true
        System.out.println(maps.containsValue(22));//false

        //8、获取全部键的集合
        Set keys = maps.keySet();
        System.out.println(keys);//[huawei, 手表, 生活用品, 娃娃]

        //9、获取全部值的集合
        Collection values = maps.values();
        System.out.println(values);//[100, 10, 10, 20]

        //10、集合的大小
        System.out.println(maps.size());//4

        //11、合并其他map集合
        Map map1 = new HashMap<>();
        map1.put("java1",1);
        map1.put("java2",100);
        Map map2 = new HashMap<>();
        map2.put("java3",1);
        map2.put("java2",1);
        map1.putAll(map2);
        System.out.println(map1);//{java3=1, java2=1, java1=1}
        System.out.println(map2);//{java2=1, java3=1}

    }
}

Map集合的遍历方式一:键找值

  • 先获取Map集合的全部键的Set集合。
  • 遍历键的Set集合,然后通过键提取对应值。
  • 键找值涉及到的API:

方法名称

说明

Set keySet()

获取所有键的集合

V get(Object key)

根据键获取值

Map集合的遍历方式二:键值对

  • 先把Map集合转换成Set集合,Set集合中每个元素都是键值对实体类型了。
  • 遍历Set集合,然后提取键以及提取值。
  • 键值对涉及到的API:

方法名称

说明

Set> entrySet()

获取所有键值对对象的集合

K getKey()

获得键

V getValue()

获取值

Map集合的遍历方式三:Lambda

  • 得益于JDK8开始的新技术Lambda表达式,提供了一种更简单、更直接的遍历集合的方式。

Map结合Lambda遍历的API

方法名称

说明

default void forEach(BiConsumer action)

结合lambda遍历Map集合

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

public class MapDemo3 {
    public static void main(String[] args) {
        // 1.添加元素:无序,不重复,无索引。
        Map maps = new HashMap<>();
        maps.put("iphoneX",10);
        maps.put("娃娃",20);
        maps.put( "huawei" ,100);
        maps.put("生活用品",10);
        maps.put("手表",10);
        System.out.println(maps);//{huawei=100, 手表=10, 生活用品=10, iphoneX=10, 娃娃=20}

        //1、方式一键找值:第一步:先拿到集合的全部键
//        Set keys = maps.keySet();
//        //2、第二步:遍历每个键,根据键取值
//        for (String key : keys) {
//            int value = maps.get(key);
//            System.out.println(key + "==>" + value);
//        }

        //方式二:键值对,把Map集合转成Set集合
//        Set> entries = maps.entrySet();
//        for (Map.Entry entry:entries){
//            String key = entry.getKey();
//            Integer value = entry.getValue();
//            System.out.println(key+"==>"+value);
//        }

        //方式三:Lambda
//        maps.forEach(new BiConsumer() {
//            @Override
//            public void accept(String key, Integer value) {
//                System.out.println(key+"----->"+value);
//            }
//        });
        //简化版
        maps.forEach((k,v) -> System.out.println(k+"----->"+v));
    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5695667.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存