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

 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迭代器进行输出。

猜你喜欢

转载自blog.csdn.net/weixin_40739833/article/details/80554611