import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import java.util.stream.Stream;
public class StreamDemo {
/**
* 使用数组创建stream对象
*/
public static void array(){
String[] strArr = {"A", "B", "C", "D", "E"};
Stream<String> stream = Stream.of(strArr);
stream.forEach(System.out::println);
}
/**
* 使用list创建stream对象
*/
public static void list(){
List<String> list = Arrays.asList("1", "2", "3", "6", "5");
Stream<String> stream = list.stream();
stream.forEach(System.out::println);
}
/**
* Stream.generate
*/
public static void generate(){
Stream<Integer> generate = Stream.generate(() -> 1);
//打印10次 1
generate.limit(10).forEach(System.out::println);
}
/**
* Stream.iterate
*/
public static void iterate(){
Stream<Integer> iterate = Stream.iterate(1, x -> x + 1);
iterate.limit(10).forEach(System.out::println);
}
/**
* string生成
*/
public static void string(){
String str = "qwertyuiopasdfghj";
IntStream chars = str.chars();
chars.forEach(System.out::println);
}
public static void main(String[] args) {
/************ Stream生成操作 *************/
// array();
// list();
// generate();
// iterate();
// string();
/****************** 中间操作 *************/
//如果调用方法后返回的是Stream对象,那么意味着这个操作就是中间操作
// Arrays.asList(1, 2, 3, 4, 5, 6).stream().filter((x)-> x%2==0).forEach(System.out::println);
//求出结果集中所有的偶数和
// int sum = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9).stream().filter((x) -> x % 2 == 0).mapToInt(x -> x).sum();
// System.out.println(sum);
//求集合中的最大值
// List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 8);
// Optional<Integer> max = list.stream().max((a, b) -> a - b);
// System.out.println(max.get());
//求集合最小值
// int min = list.stream().min((a, b) -> a - b).get();
// System.out.println(min);
// Optional<Integer> any = list.stream().filter((x) -> x % 2 == 0).findAny();
// System.out.println(any.get());
//
// Optional<Integer> first = list.stream().filter((x) -> x % 2 == 0).findFirst();
// System.out.println(first.get());
// Stream<Integer> integerStream = list.stream().filter(i -> {
// System.out.println("运行代码中....");
// return i % 2 == 0;
// });
//打印不会执行
// System.out.println(integerStream);
//打印会执行, 只有再执行终止操作时,中间逻辑操作才会执行
// System.out.println(integerStream.findFirst().get());
//不适用min和max 方法获取最大值、最小值 默认排序--升序
// Optional<Integer> min = list.stream().sorted().findFirst();
// System.out.println(min.get());
//自定义排序--降序
// Optional<Integer> max = list.stream().sorted((a, b) -> b - a).findFirst();
// System.out.println(max.get());
//自然排序 字典顺序排序
// Arrays.asList("java", "c#", "python", "scala", "jeva").stream()
// .sorted().forEach(System.out::println);
//自定义按长度排序
// Arrays.asList("java", "c#", "python", "scala", "jeva").stream()
// .sorted((a, b) -> a.length()-b.length()).forEach(System.out::println);
//将集合中的元素进行过滤,同时返回一个集合对象
// List<Integer> collect = list.stream().filter((x) -> x % 2 == 0).collect(Collectors.toList());
// collect.forEach(System.out::println);
//去重操作
// Arrays.asList(1, 1, 1, 2, 3, 3, 4, 6, 3, 4, 2, 8, 5, 6).stream().distinct().forEach(System.out::println);
//利用set有序且唯一的特性进行去重
// Arrays.asList(1, 1, 1, 2, 3, 3, 4, 6, 3, 4, 2, 8, 5, 6).stream().collect(Collectors.toSet()).forEach(System.out::println);
//打印 21-30 这样的集合数据 skip:跳过其中指定个数的元素
// Stream.iterate(1, x->x+1).limit(50).skip(20).limit(10).forEach(System.out::println);
// Stream.iterate(21, x->x+1).limit(10).forEach(System.out::println);
String str = "11,22,33,44,55";
// System.out.println(Stream.of(str.split(",")).mapToInt((x)-> Integer.valueOf(x)).sum());
// System.out.println(Stream.of(str.split(",")).mapToInt(Integer::valueOf).sum());
// System.out.println(Stream.of(str.split(",")).map((x)-> Integer.valueOf(x)).mapToInt(x->x).sum());
// System.out.println(Stream.of(str.split(",")).map(Integer::valueOf).mapToInt(x -> x).sum());
//创建一组自定义对象
// String str2 = "java,scala,python";
// Stream.of(str2.split(",")).map(x->new Person(x)).forEach(System.out::println);
// Stream.of(str2.split(",")).map(Person::new).forEach(System.out::println);
// Stream.of(str2.split(",")).map(x->Person.build(x)).forEach(System.out::println);
// Stream.of(str2.split(",")).map(Person::build).forEach(System.out::println);
//将str中的每一个数值都打印出来,同时算出最终的求和结果
System.out.println(Stream.of(str.split(",")).peek(System.out::println).mapToInt(Integer::valueOf).sum());
//匹配
//所有匹配
boolean isAllMatch = Stream.of(str.split(",")).allMatch(x -> x.equals("11"));
System.out.println(isAllMatch);
//存在匹配的
boolean isContain = Stream.of(str.split(",")).anyMatch(x -> x.equals("11"));
System.out.println(isContain);
}
}
Stream API的学习与简单使用---随笔
最新推荐文章于 2022-05-09 10:29:43 发布