list.stream().map()去空
时间: 2023-11-15 19:58:13 浏览: 74
list.stream().map()是Java 8中的Stream API中的一个方法,它可以将一个数据源转化成流,并且可以对流中的每个元素进行映射操作,将其映射到对应的结果。在这个过程中,我们可以使用lambda表达式来对每个元素进行处理。其中,map()方法的作用是将每个元素映射到对应的结果,而filter()方法则是用于过滤掉不符合条件的元素。在这些操作中,我们可以使用Collectors.toList()方法将结果收集到一个List中。在这个过程中,如果我们需要去掉List中的空元素,可以使用filter()方法来过滤掉空元素,例如:list.stream().map(FltDataVO::getDepAirport).filter(depAirport -> !StringUtils.isEmpty(depAirport)).collect(Collectors.toList())。这个操作可以将list中的每个元素映射为其对应的depAirport,然后过滤掉空的depAirport,最后将结果收集到一个List中。
相关问题
list.stream转map
list.stream转map是一种常见的操作,可以将一个List集合中的元素转换为Map类型。在Java 8及以上版本中,可以使用Stream API来实现这个功能。
下面是一个示例代码,展示了如何将一个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("Alice", 25),
new Person("Bob", 30),
new Person("Charlie", 35)
);
// 将List<Person>转换为Map<String, Integer>,其中姓名作为键,年龄作为值
Map<String, Integer> personMap = personList.stream()
.collect(Collectors.toMap(Person::getName, Person::getAge));
System.out.println(personMap);
}
static 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;
}
}
}
```
输出结果为:
```
{Alice=25, Bob=30, Charlie=35}
```
在上述示例中,我们通过`personList.stream()`将List转换为Stream对象,然后使用`Collectors.toMap()`方法将每个Person对象的姓名作为键,年龄作为值,最终得到一个Map对象。
list.stream collectors.tomap
`list.stream().collect(Collectors.toMap())` 是 Java 8 中的 Stream API 的一个用法,它可以将一个 List 转换成一个 Map。其中,List 中每个元素都被映射成一个 Map 的 key-value 对。
具体来说,`list.stream()` 将 List 转换成一个 Stream,然后通过 `collect(Collectors.toMap())` 方法将 Stream 中的元素收集到一个新的 Map 中。
`Collectors.toMap()` 方法有多个重载形式,最常用的一种形式接受两个 Function 对象,分别用于指定 key 和 value 的提取方式。例如:
```java
List<Person> people = Arrays.asList(
new Person("Alice", 20),
new Person("Bob", 30),
new Person("Charlie", 40)
);
Map<String, Integer> ageByName = people.stream()
.collect(Collectors.toMap(
person -> person.getName(), // key 提取函数
person -> person.getAge() // value 提取函数
));
```
上述代码中,`people` 是一个包含三个 Person 对象的 List。我们通过 `people.stream()` 将其转换成一个 Stream,然后通过 `collect(Collectors.toMap())` 方法将其中每个元素映射成一个 key-value 对,并以此构造一个新的 Map。其中,key 由 `person.getName()` 提取,value 由 `person.getAge()` 提取。
最终得到的 `ageByName` Map 的结构如下:
```
{
"Alice": 20,
"Bob": 30,
"Charlie": 40
}
```
注意,如果 List 中存在重复的 key,那么会抛出一个 `IllegalStateException` 异常。如果你需要处理这种情况,可以使用 `toMap()` 方法的另一种重载形式,该方法接受一个合并函数,用于指定当出现重复 key 时如何处理 value。例如:
```java
List<Person> people = Arrays.asList(
new Person("Alice", 20),
new Person("Bob", 30),
new Person("Charlie", 40),
new Person("Alice", 50)
);
Map<String, Integer> ageByName = people.stream()
.collect(Collectors.toMap(
person -> person.getName(),
person -> person.getAge(),
(age1, age2) -> age1 + age2 // 合并函数,将重复 key 的 value 相加
));
```
上述代码中,`people` 中有两个名字为 "Alice" 的 Person 对象,因此在转换成 Map 时会出现重复的 key。我们通过 `(age1, age2) -> age1 + age2` 指定了一个合并函数,用于将重复 key 的 value 相加。最终得到的 `ageByName` Map 的结构如下:
```
{
"Alice": 70,
"Bob": 30,
"Charlie": 40
}
```
阅读全文