Java 8 函数式编程
基本概念
• Lambda表达式是一个匿名方法,将行为像数据一样进行传递。
• Lambda表达式的常见结构: BinaryOperator<Integer> add=(x, y) → x+y。
• 函数接口指仅具有单个抽象方法的接口,用来表示Lambda表达式的类型。
filter:
过滤作用,filter里是一个Predicate 放回boolean
@Test public void test(){ List<String> collected= Stream.of("aaaa","baa","ccc","adcew") .filter(s -> s.startsWith("a")) .collect(Collectors.toList()); System.out.println(collected); }
map:
如果有一个函数可以将一种类型的值转换成另外一种类型,map操作就可以使用该函数,将一个流中的值转换成一个新的流。
传给map的Lambda表达式只接受一个类型参数,参数和返回值不必属于同一种类型,但是Lambda表达式必须是Function接口的一个实例,Function接口是只包含一个参数的普通函数接口。
@Test public void test(){ List<String> collected= Stream.of("a","b","c") .map(s -> s.toUpperCase()) .collect(Collectors.toList()); System.out.println(collected); }
flatMap
flatMap方法可用Stream替换值,然后将多个Stream连接成一个Stream
@Test public void test(){ List<Integer> collected= Stream.of(asList(1,2),asList(3,4)) .flatMap(number->number.stream()) .collect(toList()); System.out.println(collected); }
min
@Test public void test() { List<Toy> toys= asList(new Toy("Toy1", 524),
new Toy("Toy2", 378),
new Toy("Toy3", 451));
Toy min = toys.stream().min(Comparator.comparing(toy->toy.getLength())).get();
System.out.println(min .getName()+min .getLength());
}
reduce
reduce操作可以实现从一组值中生成一个值
@Test
public void test() {
List<Track> tracks = asList(new Track("Bakai", 524),
new Track("Violets for Your Furs", 378),
new Track("Time Was", 451));
Track minTrack = tracks.stream().min(Comparator.comparing(track -> track.getLength())).get();
System.out.println(minTrack.getName()+minTrack.getLength());
}
不要小瞧女程序员
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具