Java中怎么遍历map中value值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中怎么遍历map中value值相关的知识,希望对你有一定的参考价值。

Map有个values()方法

public static void main(String[] args) 
    Map map = new HashMap();      //定义Map集合对象
    map.put("apple", "新鲜的苹果");     //向集合中添加对象
    map.put("computer", "配置优良的计算机");
    map.put("book", "堆积成山的图书");
    Collection values = map.values();    //获取Map集合的value集合
    for (Object object : values) 
        System.out.println("键值:" + object.toString()); //输出键值对象
    

参考技术A

试试这个吧。。

HashMap<String,String> hashMap=new HashMap<String,String>();
for(hashMap.Entry<String,String> entry : hashMap.entrySet())
System.out.println("Key="+entry.getKey()+",values="+entry.getValue());

怎么在java 8的map中使用stream

怎么在java 8的map中使用stream

简介

Map是java中非常常用的一个集合类型,我们通常也需要去遍历Map去获取某些值,java 8引入了Stream的概念,那么我们怎么在Map中使用Stream呢?

基本概念

Map有key,value还有表示key,value整体的Entry。

创建一个Map:

Map<String, String> someMap = new HashMap<>();
复制代码

获取Map的entrySet:

Set<Map.Entry<String, String>> entries = someMap.entrySet();
复制代码

获取map的key:

Set<String> keySet = someMap.keySet();
复制代码

获取map的value:

Collection<String> values = someMap.values();
复制代码

上面我们可以看到有这样几个集合:Map,Set,Collection。

除了Map没有stream,其他两个都有stream方法:

Stream<Map.Entry<String, String>> entriesStream = entries.stream();
        Stream<String> valuesStream = values.stream();
        Stream<String> keysStream = keySet.stream();
复制代码

我们可以通过其他几个stream来遍历map。

使用Stream获取map的key

我们先给map添加几个值:

someMap.put("jack","20");
someMap.put("bill","35");
复制代码

上面我们添加了name和age字段。

如果我们想查找age=20的key,则可以这样做:

Optional<String> optionalName = someMap.entrySet().stream()
                .filter(e -> "20".equals(e.getValue()))
                .map(Map.Entry::getKey)
                .findFirst();

        log.info(optionalName.get());
复制代码

因为返回的是Optional,如果值不存在的情况下,我们也可以处理:

optionalName = someMap.entrySet().stream()
                .filter(e -> "Non ages".equals(e.getValue()))
                .map(Map.Entry::getKey).findFirst();

        log.info("",optionalName.isPresent());
复制代码

上面的例子我们通过调用isPresent来判断age是否存在。

如果有多个值,我们可以这样写:

someMap.put("alice","20");
        List<String> listnames = someMap.entrySet().stream()
                .filter(e -> e.getValue().equals("20"))
                .map(Map.Entry::getKey)
                .collect(Collectors.toList());

        log.info("",listnames);
复制代码

上面我们调用了collect(Collectors.toList())将值转成了List。

使用stream获取map的value

上面我们获取的map的key,同样的我们也可以获取map的value:

List<String> listAges = someMap.entrySet().stream()
                .filter(e -> e.getKey().equals("alice"))
                .map(Map.Entry::getValue)
                .collect(Collectors.toList());

        log.info("",listAges);


 

以上是关于Java中怎么遍历map中value值的主要内容,如果未能解决你的问题,请参考以下文章

java Map 怎么遍历

java中,怎么在jsp页面遍历map集合

java中map的常用遍历方法都有哪些?

java中map的常用遍历方法

java怎么取map中的key值

java怎么判断map集合的值是多少?