java list lambda collect 用法
时间: 2023-05-18 15:07:15 浏览: 90
Java 8 中的 List 接口提供了一个新的方法 collect(),它可以将 List 中的元素转换为另一种形式,例如将 List 中的字符串转换为大写形式。Lambda 表达式可以用于 collect() 方法,以便更轻松地实现转换逻辑。例如,以下代码将 List 中的所有字符串转换为大写形式:
List<String> list = Arrays.asList("apple", "banana", "orange");
List<String> upperList = list.stream().map(String::toUpperCase).collect(Collectors.toList());
在这个例子中,map() 方法将每个字符串转换为大写形式,collect() 方法将转换后的字符串收集到一个新的 List 中。
相关问题
java list lambda 转 map
在Java中,使用Lambda表达式可以很方便地将List转换为Map。首先,我们需要定义一个要操作的实体类,比如Person类。然后,我们可以使用Stream流的Lambda语法来进行List和Map的互转操作。
下面是一个示例代码,展示了如何使用Lambda表达式将List转换为Map:
```java
List<Person> persons = new ArrayList<>();
persons.add(new Person("张三", "男", 27));
persons.add(new Person("李四", "男", 14));
persons.add(new Person("王五", "女", 17));
persons.add(new Person("赵六", "女", 34));
Map<String, Person> personMap = persons.stream()
.collect(Collectors.toMap(Person::getUuid, Function.identity()));
```
在上面的代码中,我们使用了`stream()`方法将List转换为Stream流。然后,使用`collect()`方法结合`toMap()`方法来将Stream流转换为Map。`toMap()`方法接受两个参数,第一个参数是用于生成Map的键的函数,这里我们使用了Person类的`getUuid()`方法作为键。第二个参数是用于生成Map的值的函数,这里我们使用了`Function.identity()`方法,表示使用对象本身作为值。
通过这种方式,我们可以很方便地将List转换为Map,并且代码简洁优雅。同时,使用Lambda表达式进行转换操作也可以提高性能,特别是在处理大量数据时。
java 使用lambda对list分组求和
可以使用Java 8中的Stream API和lambda表达式来对List进行分组求和。假设我们有一个List<Integer>,需要按照其中元素的奇偶性进行分组求和,可以使用如下代码:
```java
import java.util.*;
import java.util.stream.*;
public class Main {
public static void main(String[] args) {
List<Integer> nums = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
Map<Boolean, Integer> result = nums.stream()
.collect(Collectors.partitioningBy(num -> num % 2 == 0,
Collectors.summingInt(Integer::intValue)));
System.out.println(result); // 输出 {false=25, true=30},即奇数之和为25,偶数之和为30
}
}
```
在上述代码中,我们使用`stream()`方法将`nums`列表转换为Stream对象,然后使用`partitioningBy`方法将Stream按照元素的奇偶性进行分组,返回一个Map<Boolean, Integer>,其中Boolean表示分组的键(true表示偶数,false表示奇数),Integer表示分组的值(即每个分组中元素的和)。最终使用Map的toString()方法将结果输出到控制台上。