HashMap 的 7 種遍歷方式


 

HashMap 遍歷

HashMap 遍歷從大的方向來說,可分為以下 4 類

  1. 迭代器(Iterator)方式遍歷;
  2. For Each 方式遍歷;
  3. Lambda 表達式遍歷(JDK 1.8+);
  4. Streams API 遍歷(JDK 1.8+)。

但每種類型下又有不同的實現方式,因此具體的遍歷方式又可以分為以下 7 種:

  1. 使用迭代器(Iterator)EntrySet 的方式進行遍歷;
  2. 使用迭代器(Iterator)KeySet 的方式進行遍歷;
  3. 使用 For Each EntrySet 的方式進行遍歷;
  4. 使用 For Each KeySet 的方式進行遍歷;
  5. 使用 Lambda 表達式的方式進行遍歷;
  6. 使用 Streams API 單線程的方式進行遍歷;
  7. 使用 Streams API 多線程的方式進行遍歷。

接下來我們來看每種遍歷方式的具體實現代碼。

1.迭代器 EntrySet

public class HashMapTest {
    public static void main(String[] args) {
        // 創建並賦值 HashMap
        Map<Integer, String> map = new HashMap();
        map.put(1, "Java");
        map.put(2, "JDK");
        map.put(3, "Spring Framework");
        map.put(4, "MyBatis framework");
        map.put(5, "Java中文社群");
        // 遍歷
        Iterator<Map.Entry<Integer, String>> iterator = map.entrySet().iterator();
        while (iterator.hasNext()) {
            Map.Entry<Integer, String> entry = iterator.next();
            System.out.print(entry.getKey());
            System.out.print(entry.getValue());
        }
    }
}

 

2.迭代器 KeySet

public class HashMapTest {
    public static void main(String[] args) {
        // 創建並賦值 HashMap
        Map<Integer, String> map = new HashMap();
        map.put(1, "Java");
        map.put(2, "JDK");
        map.put(3, "Spring Framework");
        map.put(4, "MyBatis framework");
        map.put(5, "Java中文社群");
        // 遍歷
        Iterator<Integer> iterator = map.keySet().iterator();
        while (iterator.hasNext()) {
            Integer key = iterator.next();
            System.out.print(key);
            System.out.print(map.get(key));
        }
    }
}

3.ForEach EntrySet

public class HashMapTest {
    public static void main(String[] args) {
        // 創建並賦值 HashMap
        Map<Integer, String> map = new HashMap();
        map.put(1, "Java");
        map.put(2, "JDK");
        map.put(3, "Spring Framework");
        map.put(4, "MyBatis framework");
        map.put(5, "Java中文社群");
        // 遍歷
        for (Map.Entry<Integer, String> entry : map.entrySet()) {
            System.out.print(entry.getKey());
            System.out.print(entry.getValue());
        }
    }
}

4.ForEach KeySet

public class HashMapTest {
    public static void main(String[] args) {
        // 創建並賦值 HashMap
        Map<Integer, String> map = new HashMap();
        map.put(1, "Java");
        map.put(2, "JDK");
        map.put(3, "Spring Framework");
        map.put(4, "MyBatis framework");
        map.put(5, "Java中文社群");
        // 遍歷
        for (Integer key : map.keySet()) {
            System.out.print(key);
            System.out.print(map.get(key));
        }
    }
}

5.Lambda

public class HashMapTest {
    public static void main(String[] args) {
        // 創建並賦值 HashMap
        Map<Integer, String> map = new HashMap();
        map.put(1, "Java");
        map.put(2, "JDK");
        map.put(3, "Spring Framework");
        map.put(4, "MyBatis framework");
        map.put(5, "Java中文社群");
        // 遍歷
        map.forEach((key, value) -> {
            System.out.print(key);
            System.out.print(value);
        });
    }
}

6.Streams API 單線程

public class HashMapTest {
    public static void main(String[] args) {
        // 創建並賦值 HashMap
        Map<Integer, String> map = new HashMap();
        map.put(1, "Java");
        map.put(2, "JDK");
        map.put(3, "Spring Framework");
        map.put(4, "MyBatis framework");
        map.put(5, "Java中文社群");
        // 遍歷
        map.entrySet().stream().forEach((entry) -> {
            System.out.print(entry.getKey());
            System.out.print(entry.getValue());
        });
    }
}

7.Streams API 多線程

public class HashMapTest {
    public static void main(String[] args) {
        // 創建並賦值 HashMap
        Map<Integer, String> map = new HashMap();
        map.put(1, "Java");
        map.put(2, "JDK");
        map.put(3, "Spring Framework");
        map.put(4, "MyBatis framework");
        map.put(5, "Java中文社群");
        // 遍歷
        map.entrySet().parallelStream().forEach((entry) -> {
            System.out.print(entry.getKey());
            System.out.print(entry.getValue());
        });
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM