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));