當前位置: 妍妍網 > 碼農

Map遍歷 key-value 的4種方法

2024-05-09碼農

四種方法

  • 先用 keySet() 取出所有key值,再取出對應value——增強for迴圈遍歷

  • 先用 keySet() 取出所有key值,再取出對應value——使用叠代器遍歷

  • 透過 entrySet 來獲取 key-value ——增強for迴圈遍歷

  • 透過 entrySet 來獲取 key-value ——使用叠代器遍歷

  • Map是java中的介面, Map.Entry 是Map的一個內部介面。Map提供了一些常用方法,如 keySet()、entrySet() 等方法, keySet() 方法返回值是Map中key值的Set集合; entrySet() 的返回值也是返回一個Set集合,此集合的型別為 Map.Entry<K, V>

    Map.Entry 是Map聲明的一個內部介面,此介面為泛型,定義為 Entry<K,V> 。它表示Map中的一個實體(一個 key-value 對)。介面中有 getKey() , getValue 方法。

    準備

    構造HashMap,給hashMap添加元素

    HashMap hashMap = new HashMap();
    hashMap.put("三國演義","羅貫中");
    hashMap.put("水滸傳","施耐庵");
    hashMap.put("西遊記","吳承恩");
    hashMap.put("紅樓夢","曹雪芹");

    遍歷

    方法一:先用keySet()取出所有key值,再取出對應value——使用叠代器遍歷
  • 程式碼

    /*1、先用keySet()取出所有key值,再取出對應value——增強for迴圈遍歷*/
    System.out.println("====1、先用keySet()取出所有key值,再取出對應value——增強for迴圈遍歷====");
    Set keyset = hashMap.keySet();
    for(Object key:keyset){
    System.out.println(key+"-"+hashMap.get(key));
    }

  • 執行結果

  • 方法二:先取出所有的key,再透過key取出對應的value——使用叠代器遍歷
  • 程式碼

    /*2、先用keySet()取出所有key值,再取出對應value——使用叠代器遍歷*/
    System.out.println("====2、先用keySet()取出所有key值,再取出對應value——使用叠代器遍歷====");
    Iterator iterator = keyset.iterator();
    while(iterator.hasNext()){
    Object key = iterator.next();
    System.out.println(key+"-"+hashMap.get(key));
    }

  • 執行結果

  • 方法三:透過entrySet()獲得key-value值——增強for迴圈遍歷
  • 程式碼

    /*3、透過entrySet()獲得key-value值——增強for迴圈遍歷*/
    System.out.println("====3、透過entrySet()獲得key-value值——增強for迴圈遍歷====");
    Set set = hashMap.entrySet();
    for(Object key:set){
    Map.Entry entry = (Map.Entry) key;
    System.out.println(entry.getKey()+"-"+entry.getValue());
    }

  • 執行結果

  • 方法四:透過entrySet()獲得key-value值——使用叠代器遍歷
  • 程式碼

    /*4、透過entrySet()獲得key-value值——使用叠代器遍歷*/
    System.out.println("====4、透過entrySet()獲得key-value值——使用叠代器遍歷====");
    Set set1 = hashMap.entrySet();
    Iterator iterator1 = set1.iterator();
    while(iterator1.hasNext()){
    Object itset = iterator1.next();
    Map.Entry entry = (Map.Entry) itset;
    System.out.println(entry.getKey()+"-"+entry.getValue());
    }

  • 執行結果

  • 完整程式碼

    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Map;
    import java.util.Set;
    public classMapTraverse{
    publicstaticvoidmain(String[] args){
    HashMap hashMap = new HashMap();
    hashMap.put("三國演義","羅貫中");
    hashMap.put("水滸傳","施耐庵");
    hashMap.put("西遊記","吳承恩");
    hashMap.put("紅樓夢","曹雪芹");
    /*1、先用keySet()取出所有key值,再取出對應value——增強for迴圈遍歷*/
    System.out.println("====1、先用keySet()取出所有key值,再取出對應value——增強for迴圈遍歷====");
    Set keyset = hashMap.keySet();
    for(Object key:keyset){
    System.out.println(key+"-"+hashMap.get(key));
    }
    /*2、先用keySet()取出所有key值,再取出對應value——使用叠代器遍歷*/
    System.out.println("====2、先用keySet()取出所有key值,再取出對應value——使用叠代器遍歷====");
    Iterator iterator = keyset.iterator();
    while(iterator.hasNext()){
    Object key = iterator.next();
    System.out.println(key+"-"+hashMap.get(key));
    }
    /*3、透過entrySet()獲得key-value值——增強for迴圈遍歷*/
    System.out.println("====3、透過entrySet()獲得key-value值——增強for迴圈遍歷====");
    Set set = hashMap.entrySet();
    for(Object key:set){
    Map.Entry entry = (Map.Entry) key;
    System.out.println(entry.getKey()+"-"+entry.getValue());
    }
    /*4、透過entrySet()獲得key-value值——使用叠代器遍歷*/
    System.out.println("====4、透過entrySet()獲得key-value值——使用叠代器遍歷====");
    Set set1 = hashMap.entrySet();
    Iterator iterator1 = set1.iterator();
    while(iterator1.hasNext()){
    Object itset = iterator1.next();
    Map.Entry entry = (Map.Entry) itset;
    System.out.println(entry.getKey()+"-"+entry.getValue());
    }
    }
    }

    套用舉例

  • 問題描述

    使用HashMap添加3個員工物件,要求

  • 鍵:員工id

  • 值:員工物件 並遍歷顯示薪資>18000的員工(遍歷方式最少兩種)員工類:姓名、薪資、員工id

  • 程式碼

    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Map;
    import java.util.Set;
    /*使用HashMap添加3個員工物件,要求
    鍵:員工id
    值:員工物件
    並遍歷顯示薪資>18000的員工(遍歷方式最少兩種)員工類:姓名、薪資、員工id
    */
    public class MapExercise {
    public static void main(String[] args) {
    HashMap hashMap = new HashMap();
    hashMap.put(1, new employee("Tom", 20000.0, 1));
    hashMap.put(2, new employee("Jack", 10000.0, 2));
    hashMap.put(3, new employee("Bob", 30000.0, 3));
    hashMap.put(4, new employee("Marry", 17000.0, 4));
    /*1、透過keySet()獲取所有key值,再得到對應的value值——增強for迴圈遍歷*/
    System.out.println("====1、透過keySet()獲取所有key值,再得到對應的value值——增強for迴圈遍歷");
    Set keyset = hashMap.keySet();
    for (Object key : keyset) {
    employee m = (employee) hashMap.get(key);
    if (m.getSalary() > 18000) {
    System.out.println(m);
    }
    }
    /*2、透過entrySet()獲取key-value值——使用叠代器遍歷*/
    System.out.println("====2、透過entrySet()獲取key-value值——使用叠代器遍歷====");
    Set set = hashMap.entrySet();
    Iterator iterator = set.iterator();
    while (iterator.hasNext()) {
    Object itset = iterator.next();
    Map.Entry entry = (Map.Entry) itset;
    employee m = (employee) entry.getValue();
    if (m.getSalary() > 18000) {
    System.out.println(m);
    }
    }
    }
    }
    class employee{
    private String name;
    private Double salary;
    private int id;
    public employee(String name, Double salary, int id) {
    this.name = name;
    this.salary = salary;
    this.id = id;
    }
    public String getName() {
    return name;
    }
    public void setName(String name) {
    this.name = name;
    }
    public Double getSalary() {
    return salary;
    }
    public void setSalary(Double salary) {
    this.salary = salary;
    }
    public int getId() {
    return id;
    }
    public void setId(int id) {
    this.id = id;
    }
    @Override
    public String toString() {
    return"employee{" +
    "name='" + name + '\'' +
    ", salary=" + salary +
    ", id=" + id +
    '
    }';
    }
    }










  • 執行結果

  • 以上是基礎的Map遍歷方法,Java8簡化了很多操作,效率上基本無差。

    來源:blog.csdn.net/qq_40839718/

    article/details/123622684

    >>

    END

    精品資料,超贊福利,免費領

    微信掃碼/長按辨識 添加【技術交流群

    群內每天分享精品學習資料

    最近開發整理了一個用於速刷面試題的小程式;其中收錄了上千道常見面試題及答案(包含基礎並行JVMMySQLRedisSpringSpringMVCSpringBootSpringCloud訊息佇列等多個型別),歡迎您的使用。

    👇👇

    👇點選"閱讀原文",獲取更多資料(持續更新中