📌  相关文章
📜  如何在Java中将 HashMap 转换为 ArrayList?

📅  最后修改于: 2022-05-13 01:55:13.530000             🧑  作者: Mango

如何在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]