Lambda表达式转成map,多个参数或属性作为key或value
package com.linc.othertest.study;
import io.swagger.models.auth.In;
import lombok.Builder;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @author LinC
* @date 2022/2/10 18:18
* @description //TODO
*/
@Slf4j
public class LambdaTest {
public static void main(String[] args) {
//学生对象集合
List<Student> students = new ArrayList<>();
for (int i = 0; i < 10; i++) {
Student build = Student.builder().id(i).age(i + 10).name("张" + i).build();
students.add(build);
}
//stream流处理
//单个参数使用引用
Map<Integer, String> partsMap = students.stream()
.collect(Collectors.toMap(Student::getId, Student::getName));
partsMap.entrySet().stream().forEach(o -> log.info(
"key: [{}],value: [{}]", o.getKey() ,o.getValue()));
System.out.println("===========================================");
//多个参数
Map<String, String> partsMap2 = students.stream()
.collect(Collectors.toMap(key -> "id: " + key.getId(),
value -> "姓名: " + value.getName() +"=="+ "年龄: " + value.getAge()));
partsMap2.entrySet().stream().forEach(o -> log.info(
"key: [{}],value: [{}]", o.getKey() ,o.getValue()));
}
@Data
@Builder
public static class Student {
private Integer id;
private String name;
private Integer age;
}
}
测试结果: