jdk8 lambda 常用流操作
来源:互联网 发布:培养java工程师 编辑:程序博客网 时间:2024/05/22 03:50
/** * */package com.lambdasTest.stream;import java.util.Arrays;import java.util.Comparator;import java.util.List;import java.util.function.BinaryOperator;import java.util.stream.Collectors;import java.util.stream.Stream;/** * jdk8 lambda 函数式编程之stream * * @Date Oct 23, 2017 12:27:17 PM */public class StreamOfLambdas { public static void main(String[] agrs) { // collect(toList()) List<String> collected = Stream.of("a", "b", "c", "d").collect(Collectors.toList()); System.out.println(collected); // [a, b, c, d] System.out.println(Arrays.asList("a", "b", "c", "d")); //[a, b, c, d] // map 将一个流中的值转换成一个新的流 collected = Stream.of("a", "b", "hEllo").map(string -> string.toUpperCase()).collect(Collectors.toList()); System.out.println(collected); // [A,B,HELLO] // filter List<String> beginningWithNumbers = Stream.of("a", "1abc", "5acs").filter(value -> isDigit(value.charAt(0))).collect(Collectors.toList()); System.out.println("filter: " + beginningWithNumbers); // [1abc, 5acs] // flatmap 可用Stream替换值,然后将多个Stream连接成一个Stream List<Integer> together = Stream.of(Arrays.asList(1, 2), Arrays.asList(3, 4)).flatMap(numbers -> numbers.stream()).collect(Collectors.toList()); System.out.println(together); // [1, 2, 3, 4] // min and max List<Track> tracks = Arrays.asList(new Track("bakai", 524), new Track("Vlolets for your furs", 373), new Track("Time was", 451)); Track shortestTrack = tracks.stream().min(Comparator.comparing(track->track.getLength())).get(); System.out.println(shortestTrack.getName().toString() + shortestTrack.getLength()); // Vlolets for your furs373 // reduce 从一组值中生成一个值 int count = Stream.of(1, 2, 3).reduce(0, (acc, element) -> acc + element); System.out.println(count); //6 BinaryOperator<Integer> accumulator = (acc, element) -> acc + element; count = accumulator.apply(accumulator.apply(accumulator.apply(0, 1), 2), 3); System.out.println(count); //6 } public static boolean isDigit(char c) { return (int) c >= 48 && (int) c <= 57; }}class Track { private String name; private int length; /** * @param name * 曲目 * @param length * 长度 */ public Track(final String name, final int length) { super(); this.name = name; this.length = length; } /** * @return the name */ public String getName() { return name; } /** * @param name * the name to set */ public void setName(String name) { this.name = name; } /** * @return the length */ public int getLength() { return length; } /** * @param length * the length to set */ public void setLength(int length) { this.length = length; }}
阅读全文
0 0
- jdk8 lambda 常用流操作
- jdk8 Lambda
- JDK8对List的简化操作-Lambda表达式
- JDK8新特性-Lambda
- jdk8中的lambda表达式
- JDK8 lambda表达式
- JDK8 Lambda表达式教程
- jdk8 lambda 练习
- JDK8-Lambda表达式(一)
- JDK8-Lambda练习(二)
- JDK8 ——lambda表达式
- jdk8使用lambda表达式排序
- JDK8新特性:lambda入门
- jdk8 特性例子- lambda expressions
- JDK8新特性Lambda入门
- jdk8新特性->lambda表达式
- JDK8的集合流式操作
- JDK8.0 流stream 基本操作
- Linkit ONE开发板实验04-SD卡操作
- 【zookeeper】伪集群
- Batch vs Stochastic Gradient
- C#--结构、类与属性
- virtualenv,virtualenvwrapper,pyenv 三大虚拟环境使用
- jdk8 lambda 常用流操作
- 百度云离线VPS下载器
- Flask-Restful
- build opencv3.3.0 with VTK8.0, CUDA9.0 on ubuntu9.0
- 【zookeeper】简单的客户端命令
- 利用border写一个小三角形
- 抗日战争与元数学的兴起
- 《DOS命令一日通》附录
- matlab中自带的分类器