/***
* java 8 的 Stream 使用到了 哪些 函数接口 ?
*
*/
public class JavaStreamTest {
/***
* stream 的常见操作
* 操作分为 中间 操作和最终操作
* 中间操作得到的还是一个流
* 要想得到我们想要的结果 ,如输入, 装入一个集合 ,计算个数 ,就需要最终操作。
* 而且执行过最终操作后,流就不再可以使用。 否则会报异常
* 最终操作有 :forEach count collect
* @param args
*/
public static void main(String args[]){
// Stream 的创建:由集合创建或者由可变参数,数组创建
Stream<String> stringStream = Arrays.asList("hello"," beauty","girl").stream();
String[] strings = new String[]{"i","fine","thank","you"};
Stream<String> stringStreamByArray = Stream.of(strings);
// void forEach(Consumer<? super T> action);
// Consumer 接口的抽象方法 void accept(T t);
// 过滤操作 Stream<T> filter(Predicate<? super T> predicate);
// Predicate 接口的抽象方法 boolean test(T t);
Arrays.asList("hello"," beauty","girl").stream().filter(str -> str.length()>4).forEach(System.out::println); // 找出长度大于4 的字符串
// map操作 <R> Stream<R> map(Function<? super T, ? extends R> mapper);
// Function接口的抽象方法 R apply(T t);
List<Integer> list = Arrays.asList("hello"," beauty","girl").stream().map(s -> s.length()).collect(Collectors.toList()); // 映射字符串长度
System.out.println("collect 操作 ");
list.stream().forEach(System.out::println);
//sorted操作
Arrays.asList(10,50,100,15,666).stream().sorted();
Arrays.asList("hello"," beauty","girl").stream().sorted(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.length()-o2.length();
}
});
// distinct 操作
Arrays.asList("hello","hello"," beauty","girl").stream().distinct().forEach(System.out::println);
// limit/skip 操作 limit 取前面n 个 , skip 是跳过 n 个
Arrays.asList(10,50,100,15,666).stream().sorted().limit(1).forEach(System.out::println);
Arrays.asList(10,50,100,15,666).stream().sorted().skip(2).forEach(System.out::println);
// flatMap 操作
// <R> Stream<R> flatMap(Function<? super T, ? extends Stream<? extends R>> mapper);
// Function 接应的 抽象函数 为 R apply(T t);
// 与map 方法的区别在于 R 的返回类型 是 一个流 ? extends Stream<? extends R>
Arrays.asList("hello","hello","beauty","girl").stream().flatMap(s->Arrays.asList(s.toCharArray()).stream()).forEach(System.out::print);
}
}
java8 Stream 使用示例
最新推荐文章于 2023-12-31 17:03:28 发布