栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Map集合的遍历 [Java]

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Map集合的遍历 [Java]

遍历Map集合 首先,我们知道在Collection(单列集合)中有两种遍历方式
  • 其实在Collection中的List中我们有三种遍历方式
    • 因为我们的List集合是有序的,所以我们就多了一种使用普通for循环遍历的方式,因为List集合是有序的,所以List集合中就设置了索引,这个时候我们就可以通过索引去遍历,就和数组一样,也就是使用普通for循环的方式
  • 而我们的Collection集合中的Set集合中就只有三种遍历方式
    • 因为我们的Set集合是无序的,所以就没有索引,也就没有使用普通for循环遍历的方式,也就是Set集合中只有两种遍历的方式,就是加强for循环的方式和使用iterator迭代器迭代的方式
所以也就是我们Collection集合遍历的方式共用的有两种
  1. 使用加强for循环的方式
  2. 使用iterator迭代器的方式
那么为什么使用可以使用加强for循环和使用Iterator迭代器的方式来遍历Collection集合?
  1. 我们来分析为什么可以使用加强for循环来遍历Collection集合?
    • 因为我们的Collection接口继承了Iterable接口
      • 实现了Iterable接口的类都可以使用加强for循环(也就是foreach循环进行遍历)
  2. 我们来分析为什么可以使用Iterator迭代器来遍历Collection集合?
    • 因为我们的Iterator迭代器就是专门为了遍历Collection集合而创建出来的
      • 也就是一个专业的Collection集合遍历器
      • Iterator迭代器就是为了遍历Collection集合而创建的,所以我们当然可以使用迭代器来遍历Collection集合
那么我们的Map集合要如何来遍历?
  • 这个时候我们首先要分析
    1. 我们没有一个专门遍历Map集合的工具类
    2. 我们的Map接口中也没有继承Iterable接口,这个时候我们的Map集合也就不能使用加强for循环遍历
  • 但是我们又知道我们的Map集合中
    1. key可以使用Set集合进行存储的
    2. value可以使用Collection集合进行存储的
    3. key ---- value键值对(也就是Entry对象)可以使用Set集合进行存储
      • 所以我们根据上面这三条性质,我们的Map类中就提供了一些方法,三个方法分别可以将我们的key存储到Set集合中并且将这个Set集合返回,将我们的value存储到Collection集合中并且将这个Collection集合返回,将我们的key — value键值对(也就是Entry对象)存储到Set集合中,然后将这个Set集合返回4
      • 然后我们就得到了存储着key的Set集合,存储着value的Collection集合,以及存储着key ---- value键值对的Set集合,这个时候我们就可以使用遍历Set集合和遍历Collection集合的方式来间接的遍历Map集合
遍历Map集合中的key:
  • KeySet();
    • 返回调用这个方法的Map对象的key构成的Set集合

eg:

package com.ffyc.测试;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;

public class Demo1 {
    public static void main(String[] args) {
        HashMap h = new HashMap();
        h.put(123,"aa");
        h.put(124,"bb");
        h.put(123,"cc");
        h.put(1243,"aa");
        Set set = h.keySet();
        Iterator i = set.iterator();
        while(i.hasNext()){
            
            int x = (int)i.next();
            System.out.println(x);
        }
    }
}

遍历Map中的value
  • values();
    • 将我们的value存储到一个Collection集合中,并且将这个Collection集合返回

eg:

package com.ffyc.测试;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Collection;

public class Demo2 {
    public static void main(String[] args) {
        HashMap h = new HashMap();
        h.put(123,"aa");
        h.put(124,"bb");
        h.put(123,"cc");
        h.put(1243,"aa");
        Collection collection = h.values();
        Iterator i = collection.iterator();
        while(i.hasNext()){
            String x = (String)i.next();
            System.out.println(x);
        }
    }
}
遍历Map中的Entry对象(也就是键值对)
  • entrySet();
    • 返回调用这个方法的Map对象中的Entry对象构成的Set集合

eg:

package com.ffyc.测试;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
import java.util.Map.Entry;

public class Demo3 {
    public static void main(String[] args) {
        HashMap h = new HashMap();
        h.put(123,"aa");
        h.put(124,"bb");
        h.put(123,"cc");
        h.put(1243,"aa");
        Set set = h.entrySet();
        Iterator i = set.iterator();
        while(i.hasNext()){
            Entry entry = (Entry)i.next();
            System.out.println(entry.getKey() + "------>" + entry.getValue());
        }
    }
}
  • 这里我们使用了Map. Entry接口中的两个方法
    1. getKey();
      • 获取这个Entry对象中的key值
    2. getValue();
      • 获取这个Entry对象中的value值
补充:

如果我们只是想得到key和value的遍历,我们可以直接通过keySet()方法得到Key对应的Set集合,然后我们使用key,将这个key作为参数传递到get()方法中去就可以得到这个key对应的value了

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/658497.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号