📅  最后修改于: 2023-12-03 14:51:16.195000             🧑  作者: Mango
在 Java 8 中,使用 Lambda 表达式可以很方便地将一个 ArrayList 转换为 HashMap。下面介绍具体实现方法。
以下是实现将 ArrayList 转换为 HashMap 的代码:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class ArrayListToHashMap {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("orange");
list.add("pear");
Map<String, Integer> map = new HashMap<>();
int i = 1;
for (String s : list) {
map.put(s, i++);
}
System.out.println(map);
}
}
输出结果:
{orange=3, banana=2, apple=1, pear=4}
以下是使用 Lambda 表达式将 ArrayList 转换为 HashMap 的代码:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class ArrayListToHashMapLambda {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("orange");
list.add("pear");
Map<String, Integer> map = new HashMap<>();
int i = 1;
list.forEach(s -> map.put(s, i++));
System.out.println(map);
}
}
输出结果与上面的代码一致。
上面的代码中,使用了一个 Lambda 表达式:
s -> map.put(s, i++)
这个表达式的含义是,在循环遍历 list 的时候,对于每一个元素 s,将 s 作为 key,i 作为 value,把它们放到 map 中。之后,i 加上 1。
这个 Lambda 表达式对应的函数式接口是 Consumer
使用 Lambda 表达式将 ArrayList 转换为 HashMap 可以简化代码,并且使代码更具可读性和可维护性。我们只需要记住 forEach 方法接受的参数是一个 Consumer