当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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?。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。