Collectors.toMap() keyMapper——更简洁的表达

java

1个回答

写回答

用户1234

2025-07-09 02:45

+ 关注

Java
Java

使用Collectors.toMap() keyMapper可以更简洁地生成一个Map对象。这个方法可以将流中的元素按照指定的键生成一个Map,并且还可以指定值的生成方式。下面将介绍 的一篇文章,并附带案例代码。

案例代码:

首先,我们定义一个Person类,它有两个属性:name和age。

Java

public class Person {

private String name;

private int age;

public Person(String name, int age) {

this.name = name;

this.age = age;

}

public String getName() {

return name;

}

public int getAge() {

return age;

}

}

接下来,我们创建一个Person列表,并使用Collectors.toMap()方法将列表中的元素按照name作为键生成一个Map对象。

Java

import Java.util.Arrays;

import Java.util.List;

import Java.util.Map;

import Java.util.stream.Collectors;

public class MAIn {

public static void mAIn(String[] args) {

List<Person> personList = Arrays.asList(

new Person("Alice", 20),

new Person("Bob", 25),

new Person("Charlie", 30)

);

Map<String, Person> personMap = personList.stream()

.collect(Collectors.toMap(Person::getName, person -> person));

System.out.println(personMap);

}

}

输出结果为:

{Alice=Person@1b6d3586, Bob=Person@4554617c, Charlie=Person@74a14482}

可以看到,通过Collectors.toMap()方法,我们成功地将Person列表中的元素按照name作为键生成了一个Map对象。

使用Collectors.toMap() keyMapper——更简洁的表达

在Java 8中,引入了一种更简洁的方式来生成Map对象,即使用Collectors.toMap()方法的keyMapper参数。它允许我们指定一个函数来生成Map的键。

Java

Map<String, Person> personMap = personList.stream()

.collect(Collectors.toMap(Person::getName, person -> person));

在上面的例子中,我们使用Person对象的getName方法作为键生成Map。这个方法会返回一个String类型的值作为键。同时,我们还可以指定值的生成方式。在这个例子中,我们使用lambda表达式person -> person来生成Map的值,即将Person对象本身作为值。

通过使用Collectors.toMap()方法的keyMapper参数,我们可以更简洁地生成一个Map对象。这种方式适用于需要将流中的元素按照指定的键生成Map的场景。在案例代码中,我们成功地将Person列表中的元素按照name作为键生成了一个Map对象。这种方式不仅简洁,而且更易读,提高了代码的可读性和可维护性。

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号