当前位置:   article > 正文

Java 集合类 7-Map子类的输出方式_java中map重写了tostring么 可以直接print么

java中map重写了tostring么 可以直接print么

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

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

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

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

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

 通过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());
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

运行结果:

运行结果

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/973898
推荐阅读
相关标签
  

闽ICP备14008679号