Stream流常用中间操作方法(执行完此方法后Stream仍然可以继续执行其他操作)
Stream流常用终结操作方法(执行完此方法后Stream将不能再执行其他操作)
Stream流常用收集操作方法(执行完此方法将Stream中的数据收集到集合中)
//建立IntStream流 IntStream is = IntStream.empty(); System.out.println(is.count());//0 //Java8新技术 int sum = IntStream.rangeClosed(0, 100).sum();//100个数相加 System.out.println(sum);//5050 IntStream is1 = IntStream.generate(() -> 3).limit(5);//生成五个数 is1.forEach(System.out::println);//33333 List<Integer> list = new ArrayList<>(); list.add(1); list.add(3); list.add(2); list.stream().forEach(System.out::println);//List<Integer> 转换为 IntStream IntStream ii = list.stream().mapToInt(e -> e);//IntStream 转换为 List<Integer> // List<Integer> lis = ii.boxed().collect(Collectors.toList());//IntStream 转换为 List<Integer> OptionalInt max = ii.max();//求最大值 System.out.println(max.getAsInt());//3
package demo1; import java.util.ArrayList; import java.util.List; import java.util.stream.Stream; /** * @author sulishijian * @date 2021/8/23-21:34 * @since 16 */ public class Stream4 { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("张三"); list.add("李四"); list.add("王五"); list.add("赵六"); list.add("李强"); list.sort(String::compareTo); System.out.println(list); Stream<String> stream = list.stream(); //filter 过滤操作保留只剩李的名字 //Stream<String> flt = stream.filter(a -> a.startsWith("李")); //flt.forEach(System.out::println);//李四 李强 //limit 限制操作取前三个 //Stream<String> limit = stream.limit(3); //limit.forEach(System.out::println);//张三 李四 王五 //skip 跳过前两个 // Stream<String> skip = stream.skip(2); // skip.forEach(System.out::println);//王五 赵六 李强 //distinct 去除重复元素 //list.add("张三"); //Stream<String> distinct = list.stream().distinct(); //distinct.forEach(System.out::println);//张三 李四 王五 赵六 李强 //sorted 进行排序默认自然排序 // stream.sorted().forEach(System.out::println);//自然升序 //stream.sorted(Comparator.reverseOrder()).forEach(System.out::println);//降序 //map 返回由给定函数应用于此流的元素的结果组成的流 //stream.map(s -> String.format("\"%s\"", s)).forEach(System.out::println);//"张三""李四""李强""王五""赵六" //count 统计以李开头的元素 long li = stream.filter(s -> s.startsWith("李")).count(); System.out.println(li);//2 } }
package demo1; import lombok.Data; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Set; import java.util.stream.Collectors; import java.util.stream.Stream; /** * @author sulishijian * @date 2021/8/24-10:26 * @since 16 */ public class Stream5 { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("张三"); list.add("李四"); list.add("王五"); list.add("赵六"); list.add("李强"); Stream<String> stream = list.stream(); //Stream流收集List集合 //List<String> name = stream.collect(Collectors.toList()); //System.out.println(name);//[张三, 李四, 王五, 赵六, 李强] //转换为Set集合 Set<String> set = stream.collect(Collectors.toSet()); System.out.println(set);//[李强, 李四, 张三, 王五, 赵六] //转换Map集合 List<Student4> list1 = new ArrayList<>(); list1.add(new Student4(1, "林心如", 80)); list1.add(new Student4(2, "张曼玉", 40)); list1.add(new Student4(3, "郭富城", 20)); list1.add(new Student4(4, "林青霞", 50)); list1.add(new Student4(5, "林青霞", 70)); Stream<Student4> stream1 = list1.stream(); Map<String, Student4> collect1 = stream1.collect(Collectors.toMap(e -> "stu_" + e.getId(), e -> e)); System.out.println(collect1);//{stu_5=Student4(id=5, name=林青霞, age=70), stu_4=Student4(id=4, name=林青霞, age=50), stu_3=Student4(id=3, name=郭富城, age=20), stu_2=Student4(id=2, name=张曼玉, age=40), stu_1=Student4(id=1, name=林心如, age=80)} } } @Data//lombok包可以自动生产get set class Student4 { private int id; private String name; private int age; public Student4(int id, String name, int age) { this.id = id; this.name = name; this.age = age; } }