Stream接口不是储存数据结构,数据源可以是一个集合,为了函数式编程创造,惰式执行,数据只能被消费一次。
分为中间操作和结束操作,
例子:
Stream<String> stream = Stream.of("1","2","3","3","tom"); //遍历 stream.forEach(System.out::println); //过滤 stream.filter((str)->{ return !str.equals("2"); }).forEach(System.out::println); //去重 stream.distinct().forEach(System.out::println); //映射 stream.map((s)->{ if (s.equals("3")){ return "30"; }else { return s; } }).forEach(System.out::println); Optional<String> jg = stream.reduce((str1, str2)->{ return str1.length() >= str2.length() ? str1 : str2; }); System.out.println(jg.get()); //合并集合 Stream<List<String>> stream2 = Stream.of(Arrays.asList("1","2","3"), Arrays.asList("3","tom")); stream2.flatMap((strs)->{ return strs.stream(); }).forEach(System.out::println);