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]
相關用法
- Java ArrayList轉HashMap用法及代碼示例
- Java ArrayList和HashMap的區別用法及代碼示例
- Java HashMap轉TreeMap用法及代碼示例
- Java HashMap轉LinkedList用法及代碼示例
- Java ArrayList轉LinkedList用法及代碼示例
- Java ArrayList轉LinkedHashMap用法及代碼示例
- Java Vector轉ArrayList用法及代碼示例
- Java ArrayList轉Vector用法及代碼示例
- Java ArrayList轉LinkedHashSet用法及代碼示例
- Java TreeMap轉ArrayList用法及代碼示例
- Java String轉ArrayList用法及代碼示例
- Java ArrayList轉HashSet用法及代碼示例
注:本文由純淨天空篩選整理自KaashyapMSK大神的英文原創作品 How to Convert HashMap to ArrayList in Java?。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。