Java 集合类 7-Map子类的输出方式

本文介绍如何使用迭代器标准输出Map集合中的数据。由于Map本身不支持迭代器输出,需通过entrySet()方法转换为Set集合再进行迭代。文章以ConcurrentHashMap为例,展示了具体的实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 Map类的四个子类因为都覆写了toString()方法,所以我们直接使用println进行打印是可以看到类中数据的,但是,这并不是Map的标准输出方式。

 与Collection子类四种输出方式(Java 集合类 3-深入浅出了解Collection的输出方式)比起,Map的输出方式略显单薄,只有iterator一种。

 由于Map类并没有继承Iterable接口,所以直接使用Map是无法进行迭代器输出的,这时就要曲线救国了。

 Map接口中定义了一个很重要的方法,可以使我们间接达到这个目的。

Set<Map.Entry<K, V>> entrySet();

 通过entrySet()方法我们可以得到一个Set接口的对象,由于Set是Collection的子接口,所以Set可是使用迭代输出,思路如下:

思路

 Entry是Map接口中的一个内部接口,进行数据的处理,详情可以参考:

Java 集合类 4-集合类的另一把利器Map

 接下来,以ConcurrentHashMap为例,进行迭代输出的使用:

import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;

public class Test {
    public static void main(String[] args) {
        // iterator标准输出
        Map<Integer, String> map = new ConcurrentHashMap<>();
        map.put(1, "xucc");
        map.put(2, "licc");
        map.put(3, "zhangsan");
        map.put(4, "lisi");
        // 1. 将Map集合转换为Set
        Set<Map.Entry<Integer,String>> set = map.entrySet();
        // 2. 获得 Iterator 对象
        Iterator<Map.Entry<Integer, String>> iterator = set.iterator();
        // 3. 遍历
        while(iterator.hasNext()) {
            // 4. 获取对象并打印
            System.out.println(iterator.next());
        }
    }
}

运行结果:

运行结果

 希望大家以后在集合类的是输出时,不管是Collection还是Map的子类,都采用iterator迭代器进行输出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值