java lambda list转map
时间: 2024-05-22 13:08:31 浏览: 122
在Java 8中,我们可以使用Lambda表达式将List转换为Map。以下是一种常见的方法:
假设我们有一个类Person,其中包含两个属性:id和name。我们要将一个Person的List转换为一个Map,其中id作为key,name作为value。
首先,我们需要将List转换为Stream。然后,我们可以使用Collectors.toMap()方法将每个Person对象转换为一个Map.Entry对象,并将它们收集到一个Map中。下面是代码示例:
```
List<Person> personList = new ArrayList<>();
personList.add(new Person(1, "Alice"));
personList.add(new Person(2, "Bob"));
personList.add(new Person(3, "Charlie"));
Map<Integer, String> idToNameMap = personList.stream()
.collect(Collectors.toMap(Person::getId, Person::getName));
System.out.println(idToNameMap);
```
输出结果如下:
```
{1=Alice, 2=Bob, 3=Charlie}
```
相关问题
Java lambda list 转map
在Java中,可以使用Lambda表达式将List转换为Map。以下是一个示例代码:
```java
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class ListToMapExample {
public static void main(String[] args) {
List<Person> personList = List.of(
new Person(1, "Alice"),
new Person(2, "Bob"),
new Person(3, "Charlie")
);
// 使用Lambda表达式将List转换为Map
Map<Integer, String> personMap = personList.stream()
.collect(Collectors.toMap(Person::getId, Person::getName));
// 打印转换后的Map
System.out.println(personMap);
}
}
class Person {
private int id;
private String name;
public Person(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
}
```
在上述示例中,我们首先创建了一个Person类,其中包含id和name属性。然后,我们创建了一个包含Person对象的List。使用Java 8的Stream API和Collectors类的toMap方法,我们将List转换为Map。在toMap方法中,我们指定了Person对象的id属性作为键,name属性作为值。最后,我们打印转换后的Map。
请注意,如果List中存在重复的键,toMap方法将引发IllegalStateException异常。可以使用toMap方法的重载版本来处理重复键的情况。
java8 lambda list转map
Java8中可以使用Lambda表达式将List转换成Map,具体实现如下:
```java
List<Person> personList = new ArrayList<>();
personList.add(new Person("Tom", 25));
personList.add(new Person("Jerry", 30));
personList.add(new Person("Mike", 35));
Map<String, Integer> personMap = personList.stream()
.collect(Collectors.toMap(Person::getName, Person::getAge));
System.out.println(personMap);
```
上述代码中,我们通过stream()方法将List转换成Stream,然后通过collect()方法将其转换成Map,其中getName()和getAge()方法是Person类中的方法,用于获取该对象的name和age属性值。最终输出结果如下:
```
{Tom=25, Jerry=30, Mike=35}
```
需要注意的是,在使用toMap()方法时,如果List中存在重复的key值,会抛出IllegalStateException异常,因此需要在toMap()方法中指定解决重复key的方式,例如:
```java
Map<String, Integer> personMap = personList.stream()
.collect(Collectors.toMap(Person::getName, Person::getAge, (existingValue, newValue) -> existingValue));
```
上述代码中,我们使用了一个lambda表达式来解决重复key的问题,当出现重复key时,我们选择保留原有的value值。
阅读全文
相关推荐
















