工作中常用lambda表达式-增加代码的逼格
- List
转 String 字符串用逗号分割
普通方式
List<Long> useridList = authoritativeVO.getUserList();
int count = 0;
StringBuilder targetStr = new StringBuilder();
for(int i=0;i<useridList.size();i++){
targetStr.append(useridList.get(i));
count++;
if(count<useridList.size()){
targetStr.append(",");
}
}
System.out.println(targetStr.toString());
lambda方式
String deptIds = authoritativeVO.getUseridList().stream().map(i -> String.valueOf(i)).collect(Collectors.joining(","));
- 查询18岁学生的id列表
##1.查询18岁的学生列表
List<Student> studentList = studentService.list(Wrappers.<Student>lambdaQuery().eq(Student::getAge,18);
##2.普通方式获取18岁学生列表的id
List<Long> idList = new ArrayList<>();
for(Student stu : studentList){
idList.add(stu.getId());
}
##2.lambda获取18岁学生列表的id
List<Long> ids = studentList.stream().map(Student::getId).collect(Collectors.toList());
- List 转Map
//list 转map
普通方式
Map<String,Person> map = new HashMap<>();
for (Person person:list) {
map.put(person.getName(),person);
}
lambda方式
Map<String,Person> map1 = list.stream().collect(Collectors.toMap(Person::getName, t->t));
Map<String,Address> map2 = list.stream().collect(Collectors.toMap(Person::getName, t->t.getAddress()));
Map<String,Integer> map4 = list.stream().collect(Collectors.toMap(Person::getName, t->t.getAge()));
Map<String,Integer> map3 = list.stream().collect(Collectors.toMap(Person::getName, Person::getAge));
- List 分组
普通方式
Map<Integer,List<Person>> mapt = new HashMap<>();
for (Person person:list){
if(mapt.containsKey(person.getAge())){
List<Person> people = mapt.get(person.getAge());
people.add(person);
}else{
List<Person> people = new ArrayList<>();
people.add(person);
mapt.put(person.getAge(),people);
}
}
lambda方式
Map<Integer,List<Person>> listMap = list.stream().collect(Collectors.groupingBy(Person::getAge));
- Map 转 List
List collect = listMap.values().stream().collect(Collectors.toList());
- 过滤
List<String> stringList = list.stream().map(s -> s.getName()).filter(s -> !s.isEmpty()).collect(Collectors.toList());
List<Person> personList = list.stream().filter(s -> !s.getName().isEmpty()).collect(Collectors.toList());
- 所使用的JAVA测试类如下
@Data
@Accessors(chain = true)
@AllArgsConstructor
public class Address {
private String province; //省
private String city; //市
private String county; //县
}
@Data
@Accessors(chain = true)
@AllArgsConstructor
public class Person {
private String name;
private int age;
private Address address;
}
本文来自博客园,作者:三丝柚,转载请注明原文链接:https://www.cnblogs.com/sansyou/p/17534004.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!