使用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 中,有两种方法可以实现我们的目标:
- 使用 Lambda 表达式将 ArrayList 转换为 HashMap。
- 使用方法引用将 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}