Java之Stream流的常用API
Stream流常见中间方法
名称 |
说明 |
Stream filter(Predicate super T> predicate) |
用于对流中的数据进行过滤 |
Stream limit(long maxSize) |
获取前几个元素 |
Stream skip(long n) |
跳过前几个元素 |
Stream distinct() |
去除流中重复的元素。依赖(hashCode和equals方法) |
static Stream concat(Stream a,Stream b) |
合并a和b两个流为一个流 |
注意:
- 中间方法也称为非终结方法,调用完成后返回新的Stream流可以继续使用,支持链式编程。
- 在Stream流中无法直接修改集合、数组中的元素。
Stream流的常见终结方法
名称 |
说明 |
void forEach(Consumer action) |
对此流的每个元素执行遍历操作 |
long count() |
返回此流中的元素数 |
代码实现
List<String> list = new ArrayList<>();
Collections.addAll(list , "张文君","张文俊","周文君","周三","李达","张俊","张俊");
list.stream().filter(s->s.startsWith("张")).forEach(s-> System.out.println(s));
long size = list.stream().filter(s ->s.length() == 3).count();
System.out.println(size);
list.stream().filter(s->s.startsWith("张")).limit(2).forEach(System.out::println);
list.stream().filter(s->s.startsWith("张")).skip(2).forEach(System.out::println);
list.stream().map(s->"黑马的:"+s).forEach(s-> System.out.println(s));
list.stream().map(Student::new).forEach(System.out::println);
Stream<String> s1 = list.stream().filter(s -> s.startsWith("张"));
Stream<String> s2 = Stream.of("java","mysql");
Stream<String> s3 = Stream.concat(s1 , s2);
s3.forEach(s -> System.out.println(s));
Stream<String> s4 = list.stream().filter(s -> s.startsWith("张"));
Stream<Integer> s5 = Stream.of(21,22);
Stream<Object> s6 = Stream.concat(s4 , s5);
s6.forEach(s -> System.out.println(s));