lambda表达式(二)
lambda表达式公司用的还是比较多的,今天特意写一篇博客记录下来,公司经常使用的该lambda表达式的常用表达方式,现在想想,其实这种方式还是比较好的,最起码挺高大上的。
package com.zyq;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* 练习使用lamda表达式
*/
public class LamdaTest {
public static void main(String[] args) {
User user1 = new User(1, "a1");
User user2 = new User(2, "a2");
User user3 = new User(3, "a3");
User user4 = new User(4, "a4");
User user5 = new User(5, "a5");
List<User> usersList = new ArrayList<>();
usersList.add(user1);
usersList.add(user2);
usersList.add(user3);
usersList.add(user4);
usersList.add(user5);
//stream:转换成流 filter:过滤 map:要显示的内容
List<String> collect = usersList.stream().filter(user -> user.getId() >= 2).map(user -> user.getName()).collect(Collectors.toList());
//这种写法也是可以的 将要返回的值使用大括号进行包裹,并用return进行返回,这在实际项目中使用的是比较多的。
// List<String> collect = usersList.stream().filter(user -> user.getId() >= 2).map(user -> {return user.getName();}).collect(Collectors.toList());
System.out.println(collect);
}
}
运行结果:
[a2, a3, a4, a5]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | package com.zyq; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.function.Function; import java.util.stream.Collectors; /** * 练习使用lamda表达式 */ public class LamdaTest { public static void main(String[] args) { User user1 = new User( 1 , "a1" ); User user2 = new User( 2 , "a2" ); User user3 = new User( 3 , "a3" ); User user4 = new User( 4 , "a4" ); User user5 = new User( 5 , "a5" ); List<User> usersList = new ArrayList<>(); usersList.add(user1); usersList.add(user2); usersList.add(user3); usersList.add(user4); usersList.add(user5); //将list集合转换成map集合,其中,userId为map的key,username为map的value,如果两个键相同,值取第一个 Map<Integer, User> map = usersList.stream().collect(Collectors.toMap(User::getId, Function.identity(), (a, b) -> a)); for (Map.Entry<Integer, User> stringEntry : map.entrySet()) { System.out.println(stringEntry.getKey()+ "--" +stringEntry.getValue()); } } } |
运行结果:
1--User{id=1, name='a1'}
2--User{id=2, name='a2'}
3--User{id=3, name='a3'}
4--User{id=4, name='a4'}
5--User{id=5, name='a5'}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | package com.zyq; import com.treemappractice.Student; import java.text.Normalizer; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.function.Function; import java.util.stream.Collectors; /** * 练习使用lamda表达式 */ public class LamdaTest { public static void main(String[] args) { User user1 = new User( 1 , "a1" ); User user2 = new User( 2 , "a2" ); User user3 = new User( 3 , "a3" ); User user4 = new User( 4 , "a1" ); User user5 = new User( 5 , "a2" ); User user6 = new User( 6 , "a3" ); List<User> usersList = new ArrayList<>(); usersList.add(user1); usersList.add(user2); usersList.add(user3); usersList.add(user4); usersList.add(user5); usersList.add(user6); //将list转化成map集合,并按照姓名进行分组,查找姓名重复的 Map<String, List<User>> userMap = usersList.stream().collect(Collectors.groupingBy(user -> user.getName())); for (String key : userMap.keySet()) { System.out.println( "key:" + "--" +key+ ",value:" +userMap.get(key)); } } } |
运行结果:
key:--a1,value:[User{id=1, name='a1'}, User{id=4, name='a1'}]
key:--a2,value:[User{id=2, name='a2'}, User{id=5, name='a2'}]
key:--a3,value:[User{id=3, name='a3'}, User{id=6, name='a3'}]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY