📜  使用Java 8 中的方法引用将 ArrayList 转换为 HashMap

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

使用Java 8 中的方法引用将 ArrayList 转换为 HashMap

数据结构对每个编码的人都是福音。但是有没有办法将数据结构转换为另一个数据结构?嗯,好像有!在本文中,我们将学习如何使用Java 8 中的方法引用将 ArrayList 转换为 HashMap。

例子:

Elements in ArrayList are : [Pen, Pencil, Book, Headphones]
Elements in HashMap are :{Pen=3, Pencil=6, Book=4, Headphones=10}

在Java 8 中,有两种方法可以实现我们的目标:

  1. 使用 Lambda 表达式将 ArrayList 转换为 HashMap。
  2. 使用方法引用将 ArrayList 转换为 HashMap。

方法:使用方法参考

与 Lambda 表达式相比,使用方法引用使代码看起来更清晰。

Lambda 只不过是代码,如果你已经有一个方法可以做同样的事情,那么你可以传递方法引用而不是 lambda 表达式。

  • 函数.identity()指的是一个元素,它使自己成为 HashMap 的键。
  • String::length允许将元素的长度存储为其受重视的值。
Java
// Java program for Converting ArrayList to
// HashMap using method reference in Java 8
  
import java.io.*;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
  
class GFG {
    public static void main(String[] args)
    {
  
        // creating arraylist to add elements
        ArrayList fruits = new ArrayList<>();
        fruits.add("Banana");
        fruits.add("Guava");
        fruits.add("Pineapple");
        fruits.add("Apple");
  
        // printing contents of arraylist before conversion
        System.out.println("Elements in ArrayList are : "
                           + fruits);
  
        // creating new hashmap and using method reference
        // with necessary classes for the conversion
        HashMap res = fruits.stream().collect(Collectors.toMap(
                Function.identity(), String::length,
                (e1, e2) -> e1, HashMap::new));
  
        // printing the elements of the hashmap
        System.out.println("Elements in HashMap are : "
                           + res);
    }
}


输出
Elements in ArrayList are : [Banana, Guava, Pineapple, Apple]
Elements in HashMap are : {Guava=5, Apple=5, Pineapple=9, Banana=6}