Java 中 Set、List 和 Map 的遍历

java集合类的使用可以说是无处不在,总的我们可以将之分为三大块,分别是从Collection接口延伸出的List、Set和以键值对形式作存储的Map类型集合。

package tup.lucene.test;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;

public class SetListAndMap {
    
    /**
     * 遍历Set集合的方法:
     * 1.使用Iterator迭代器
     * 2.使用foreach遍历
     * 3.将Set集合转换为List再遍历
     */
    private static void setTest() {
        Set<String> set = new HashSet<String>();
        set.add("Java");
        set.add("C");
        set.add("C++");
        set.add("JavaScript");
        set.add("Python");
        // 重复的元素加不进去
        set.add("Java");

        //Set集合遍历方法1:使用iterator
        System.out.println("**************Set集合遍历方法1:使用iterator***************");
        Iterator<String> it = set.iterator();
        while (it.hasNext()) {
            String value = it.next();
            System.out.println(value);
        }

        //Set集合遍历方法2:使用增强for循环
        System.out.println("**************Set集合遍历方法2:使用增强for循环***************");
        for(String s: set){
            System.out.println(s);
        }
        
        //Set集合遍历方法3:将set集合转为list集合,然后再遍历List集合即可
        System.out.println("**************Set集合遍历方法3:将set集合转为list集合,然后再遍历List集合即可***************");
        List<String> setList = new ArrayList<String>(set);//set转list
        // 遍历方法 , 使用传统for循环进行遍历。
        for (int i = 0, size = setList.size(); i < size; i++) {
            String value = setList.get(i);
            System.out.println(value);
        }
    }
    
    /**
     * 遍历List集合的方法:
     * 1.使用Iterator迭代器
     * 2.使用for循环遍历
     * 3.使用foreach遍历
     */
    private static void listTest() {
        List<String> list = new ArrayList<String>();
        list.add("111");
        list.add("222");
        list.add("333");
        list.add("444");
        list.add("555");
        
        
        // List遍历方式1:使用iterator
        System.out.println("**************List遍历方式1:使用iterator***************");
        Iterator<String> it = list.iterator();
        while (it.hasNext()) {
            String value = it.next();
            System.out.println(value);
        }
  
        // List遍历方法2:使用传统for循环进行遍历
        System.out.println("**************List遍历方法2: 使用传统for循环进行遍历***************");
        for (int i = 0; i < list.size(); i++) {
            String value = list.get(i);
            System.out.println(value);
        }
  
        // List遍历方法3: 使用增强for循环进行遍历
        System.out.println("**************List遍历方法3: 使用增强for循环(foreach)进行遍历***************");
        for (String value : list) {
            System.out.println(value);
        }
    }
    
    /**
     * 遍历map集合的方法:
     * 1.使用keySet()获得key的set集合,然后使用Iterator迭代器或foreach遍历set即可,但是只能直接取出key,再通过key取出value,两种方法
     * 2.使用entrySet()获得key-value的set集合,然后使用Iterator迭代器或foreach遍历set即可,可同时取出key和value,两种方法
     */
    private static void mapTest() {
        // 创建一个HashMap对象,并加入了一些键值对。  
        Map<String, String> maps = new HashMap<String, String>();
        maps.put("111", "java111");
        maps.put("222", "java222");
        maps.put("333", "java333");
        maps.put("444", "java444");
        maps.put("555", "java555");
        
        // Map遍历方法1-1: 使用keySet得到key的Set集合,再使用foreach遍历Set集合
        System.out.println("**************Map遍历方法1-1: 使用keySet得到key的Set集合,再使用foreach遍历Set集合***************");
        Set<String> set = maps.keySet();  
        for (String s : set) {  
            String key = s;  
            String value = maps.get(s);  
            System.out.println(key + " : " + value);  
        }
        
        // Map遍历方法1-2: 使用keySet得到key的Set集合,再使用Iterator迭代器遍历
        System.out.println("**************Map遍历方法1-2: 使用keySet得到key的Set集合,再使用Iterator迭代器遍历***************");
        Iterator<String> it = set.iterator();  
        while (it.hasNext()) {  
            String key = it.next();  
            String value = maps.get(key);  
            System.out.println(key + " : " + value);  
        }  
        
        // Map遍历方法2-1: 使用entrySet()获得key-value的Set集合,然后使用foreach遍历Set即可
        System.out.println("**************Map遍历方法2-1: 使用entrySet()获得key-value的Set集合,然后使用foreach遍历Set即可***************");
        Set<Entry<String, String>> entrySet = maps.entrySet();
        for (Entry<String, String> entry : entrySet) {
            String key = entry.getKey();
            String value = entry.getValue();
            System.out.println(key + " : " + value);
        }
        
        // Map遍历方法2-2: 使用entrySet()获得key-value的Set集合,然后使用Iterator迭代器遍历
        System.out.println("**************Map遍历方法2-2: 使用entrySet()获得key-value的Set集合,然后使用Iterator迭代器遍历***************");
        Iterator<Entry<String, String>> entryIt = entrySet.iterator();
        while (entryIt.hasNext()) {
            Map.Entry<String, String> entry = (Entry<String, String>) entryIt.next();
            String key = entry.getKey();
            String value = entry.getValue();
            System.out.println(key + " : " + value);
        }
    }
    
    public static void main(String[] args) {
        // Set集合的遍历  
        setTest();
        
        // List集合的遍历  
        listTest();
        
        // Map集合的遍历  
        mapTest();
    }

}
原文地址:https://www.cnblogs.com/cnjavahome/p/8284114.html