當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Java HashMap轉ArrayList用法及代碼示例


HashMap 是 Java 1.2 以來 Java 集合的一部分。它提供了Java Map 接口的基本實現。它將數據存儲在(鍵,值)對中。與 Hashmap 不同,ArrayList 用於為我們提供 Java 中的動態數組。它是在存儲方麵提供更多靈活性的陣列的替代方案。在本文中,我們將了解如何將 Hashmap 轉換為 ArrayList。由於 hashmap 中的每個元素都包含一個鍵/值對,因此不可能將此鍵/值對存儲在單個 ArrayList 中。因此,為了將 hashmap 轉換為 ArrayList,我們需要維護兩個獨立的 ArrayList,其中一個 ArrayList 用於存儲 Key,另一個用於存儲與這些鍵對應的值。以下是用於將 hashmap 轉換為 ArrayList 的各種方法。

方法一:

一種轉換方法是使用 ArrayList 的構造函數。為此,我們可以使用 HashMap 中的 keySet() 方法。此方法返回包含 hashmap 的所有鍵的集合。該集合可以在初始化時傳遞到 ArrayList 中,以獲得包含所有鍵的 ArrayList。獲取keys後,我們可以使用hashmap中存在的values()方法來獲取hashmap中存在的所有值的集合。我們可以使用這個集合來初始化另一個數組,該數組包含哈希圖中鍵的所有值。

Java


// Java program to convert a HashMap
// to an ArrayList
  
import java.util.*;
  
public class GFG {
    public static void main(String[] args)
    {
        // Create an empty hash map
        HashMap<String, Integer> map
            = new HashMap<>();
  
        // Add elements to the map
        map.put("vishal", 10);
        map.put("sachin", 30);
        map.put("vaibhav", 20);
  
        // Finding the Set of keys from
        // the HashMap
        Set<String> keySet = map.keySet();
  
        // Creating an ArrayList of keys
        // by passing the keySet
        ArrayList<String> listOfKeys
            = new ArrayList<String>(keySet);
  
        // Getting Collection of values from HashMap
        Collection<Integer> values = map.values();
  
        // Creating an ArrayList of values
        ArrayList<Integer> listOfValues
            = new ArrayList<>(values);
  
        System.out.println("The Keys of the Map are "
                           + listOfKeys);
  
        System.out.println("The Values of the Map are "
                           + listOfValues);
    }
}

輸出:

The Keys of the Map are [vaibhav, vishal, sachin]
The Values of the Map are [20, 10, 30]

注意:在上麵的示例中,可以清楚地觀察到鍵和值之間的相關性是由 ArrayList 的索引保留的。這意味著可以在值列表中的相同索引處找到特定鍵的值。

方法二:

將 HashMap 轉換為 ArrayList 的另一種方法是使用 Stream API 將映射鍵和值轉換為相應的列表。

Java


// Java program to convert a HashMap
// to an ArrayList
  
import java.util.*;
import java.util.stream.*;
  
public class GFG {
    public static void main(String[] args)
    {
        // Create an empty hash map
        HashMap<String, Integer> map
            = new HashMap<>();
  
        // Add elements to the map
        map.put("vishal", 10);
        map.put("sachin", 30);
        map.put("vaibhav", 20);
  
        // Java 8 code to convert map keys to list
        // Here, the collect() method collects the
        // stream of keys in a ArrayList.
        ArrayList<String> listOfKeys
            = map.keySet().stream().collect(
                Collectors.toCollection(ArrayList::new));
  
        // Java 8 code to convert map values to list
        ArrayList<Integer> listOfValues
            = map.values().stream().collect(
                Collectors.toCollection(ArrayList::new));
  
        System.out.println("The Keys of the Map are "
                           + listOfKeys);
  
        System.out.println("The Values of the Map are "
                           + listOfValues);
    }
}

輸出:

The Keys of the Map are [vaibhav, vishal, sachin]
The Values of the Map are [20, 10, 30]

注意:Collectors.toCollection(ArrayList::new) 傳遞給 collect() 方法以收集為新的 ArrayList。我們也可以使用 toList() 代替這個函數將其轉換為 List,然後再轉換為任何其他 List 實現。

方法三:

在上述兩種方法中,HashMap 都被轉換為 ArrayList,而不保留直接的鍵/值關係。鍵和值存儲在兩個不同的 ArrayList 中。但是,我們可以使用 entrySet() 方法在 ArrayList 中保留鍵/值對。此方法用於創建包含在哈希映射中的相同元素的集合。它本質上返回哈希映射的集合視圖,或者我們可以創建一個新集合並將映射元素存儲到其中。我們可以使用構造函數將此 Set 傳遞到 ArrayList 中,以形成一個以 Entry 對象作為鍵/值對的 ArrayList。

例:

Java


// Java program to convert a HashMap
// to an ArrayList
  
import java.util.*;
import java.util.stream.*;
import java.util.Map.*;
  
public class GFG {
    public static void main(String[] args)
    {
        // Create an empty hash map
        HashMap<String, Integer> map
            = new HashMap<>();
  
        // Add elements to the map
        map.put("vishal", 10);
        map.put("sachin", 30);
        map.put("vaibhav", 20);
  
        // Set of the entries from the
        // HashMap
        Set<Map.Entry<String, Integer> > entrySet
            = map.entrySet();
  
        // Creating an ArrayList of Entry objects
        ArrayList<Map.Entry<String, Integer> > listOfEntry
            = new ArrayList<Entry<String, Integer> >(entrySet);
  
        System.out.println(listOfEntry);
    }
}

輸出:

[vaibhav=20, vishal=10, sachin=30]

相關用法


注:本文由純淨天空篩選整理自KaashyapMSK大神的英文原創作品 How to Convert HashMap to ArrayList in Java?。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。