如何在Java中将 HashMap 转换为 ArrayList?
HashMap 是自Java 1.2 以来 Java 集合的一部分。它提供了Java Map 接口的基本实现。它将数据存储在(键,值)对中。与 Hashmap 不同,ArrayList 用于为我们提供Java中的动态数组。它是在存储方面提供更多灵活性的阵列的替代方案。在本文中,我们将了解如何将 Hashmap 转换为 ArrayList。
由于 hashmap 中的每个元素都包含一个键/值对,因此不可能将此键/值对存储在单个 ArrayList 中。因此,为了将 hashmap 转换为 ArrayList,我们需要维护两个独立的 ArrayList,其中一个 ArrayList 用于存储 Keys,另一个用于存储与这些键对应的值。以下是用于将 hashmap 转换为 ArrayList 的各种方法。
方法一:
一种转换方法是使用 ArrayList 的构造函数。为此,我们可以使用 HashMap 中的 keySet() 方法。此方法返回包含 hashmap 的所有键的集合。该集合可以在初始化时传递到 ArrayList 中,以获得包含所有键的 ArrayList。获得键后,我们可以使用 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 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 keySet = map.keySet();
// Creating an ArrayList of keys
// by passing the keySet
ArrayList listOfKeys
= new ArrayList(keySet);
// Getting Collection of values from HashMap
Collection values = map.values();
// Creating an ArrayList of values
ArrayList listOfValues
= new ArrayList<>(values);
System.out.println("The Keys of the Map are "
+ listOfKeys);
System.out.println("The Values of the Map are "
+ listOfValues);
}
}
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 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 listOfKeys
= map.keySet().stream().collect(
Collectors.toCollection(ArrayList::new));
// Java 8 code to convert map values to list
ArrayList 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);
}
}
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 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 > entrySet
= map.entrySet();
// Creating an ArrayList of Entry objects
ArrayList > listOfEntry
= new ArrayList >(entrySet);
System.out.println(listOfEntry);
}
}
输出:
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 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 listOfKeys
= map.keySet().stream().collect(
Collectors.toCollection(ArrayList::new));
// Java 8 code to convert map values to list
ArrayList 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 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 > entrySet
= map.entrySet();
// Creating an ArrayList of Entry objects
ArrayList > listOfEntry
= new ArrayList >(entrySet);
System.out.println(listOfEntry);
}
}
输出:
[vaibhav=20, vishal=10, sachin=30]