【java 对象容器--集合】Map集合常用方法和遍历集合

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013421629/article/details/82226075

一、简单介绍

  • Map(映射)集合表示一种非常复杂的集合,允许按照某个键来访问元素。Map 集合是由两个集合构成的,一个是键(key)集合,一个是值(value)集合。键集合是 Set 类 型,因此不能有重复的元素。而值集合是Collection 类型,可以有重复的元素。Map 集合 中的键和值是成对出现的。

  • Map集合更适合通过键快速访问值,就像查英文字典一样,键就是要查的英文单词,而值是英文单词的翻译和解释等。有的时候,一个英文单词会对应多个翻译和解释, 这是与Map集合特性对应的。

  • Map 接口直接实现类主要是 HashMap,HashMap 是基散列表数据结构的实现。

这里写图片描述

二、常用方法

Map 集合中包含两个集合(键和值),所以操作起来比较麻烦,Map 接口提供很多方法用来管理和操作集合。主要的方法如下。

1. 操作元素

  • get(Object key):返回指定键所对于的值;如果 Map 集合中不包含该键值对,则 返回 null。

  • put(Object key, Object value):指定键值对添加到集合中。

  • remove(Object key):移除键值对。

  • clear():移除 Map 集合中所有键值对。

2. 判断元素

  • isEmpty():判断 Map 集合中是否有键值对,没有返回 true,有返回 false。

  • containsKey(Object key):判断键集合中是否包含指定元素,包含返回 true,不包含返回 false。

  • containsValue(Object value):判断值集合中是否包含指定元素,包含返回 true, 不包含返回 false。

    3、 查看集合

  • keySet():返回 Map 中的所有键集合,返回值是 Set 类型。

  • values():返回 Map 中的所有值集合,返回值是 Collection 类型。

  • size():返回 Map 集合中键值对数。

4、遍历集合

  • Map 集合遍历与 List 和 Set 集合不同,Map 有两个集合,因此遍历过程可以只遍历值的集合,也可以只遍历键的集合,也可以同时遍历。这些遍历过程都可以使用 for-each 循环和迭代器进行遍历。

5、实例代码:

import java.util.*;

public class helloworld3 {
    public static void main(String[] args) {
        Map map=new HashMap();
        map.put(102, "张三");
        map.put(105, "李四");
        map.put(109, "王五");
        map.put(110, "董六");
        //"李四"值重复
        map.put(111, "李四");
        //109键已经存在,替换原来值"王五"
        map.put(109, "刘备");


        // 1.使用for-each循环遍历
        System.out.println("--1.使用for-each循环遍历--");
        // 获得键集合
        Set keys = map.keySet();
        for (Object key : keys) {
            int ikey = (Integer) key; // 自动拆箱
            String value = (String) map.get(ikey); // 自动装箱
            System.out.printf("key=%d - value=%s \n", ikey, value);
        }
        // 2.使用迭代器遍历
        System.out.println("--2.使用迭代器遍历--");
        // 获得值集合
        Collection values = map.values();
        // 遍历值集合
        Iterator it = values.iterator();
        while (it.hasNext()) {
            Object item = it.next();
            String s = (String) item;
            System.out.println("值集合元素: " + s);
        }

        // 打印集合元素个数
        System.out.println("集合size = " + map.size());
        // 打印集合
        System.out.println(map);
        // 通过键取值
        System.out.println("109 - " + map.get(109));
        System.out.println("108 - " + map.get(108));
        // 删除键值对
        map.remove(109);
        // 判断键集合中是否包含109
        System.out.println("键集合中是否包含109:" + map.containsKey(109));
        // 判断值集合中是否包含 "李四";
        System.out.println("值集合中是否包含:" + map.containsValue("李四"));
        // 判断集合是否为空
        System.out.println("集合是空的:" + map.isEmpty());
    // 清空集合
        map.clear();
        System.out.println(map);
    }
}
--1.使用for-each循环遍历--
key=102 - value=张三 
key=110 - value=董六 
key=111 - value=李四 
key=109 - value=刘备 
key=105 - value=李四 
--2.使用迭代器遍历--
值集合元素: 张三
值集合元素: 董六
值集合元素: 李四
值集合元素: 刘备
值集合元素: 李四
集合size = 5
{102=张三, 110=董六, 111=李四, 109=刘备, 105=李四}
109 - 刘备
108 - null
键集合中是否包含109false
值集合中是否包含:true
集合是空的:false
{}

Process finished with exit code 0

猜你喜欢

转载自blog.csdn.net/u013421629/article/details/82226075