Stream流开始操作
通过集合创建
@Test
public void test1(){
List<String> stream1 = Arrays.asList("java", "h5", "python", "php", "c");
stream1.stream().forEach(s -> System.out.println(s));
}
通过数组创建
@Test
public void test2(){
String [] str={"春","夏","球","冬"};
Arrays.stream(str).forEach(System.out::println);
}
通过Stream的of创建
@Test
public void test3(){
Stream.of("小明","小王","小李","小杨").forEach(System.out::println);
}
Stream流中间操作
filter过滤
@Test
public void test1(){
Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5, 6);
stream = stream.filter(a -> a % 2 == 0);
stream.forEach(System.out::println);
List<String> list = Arrays.asList("张三", "李四", "王五");
Stream<String> name = list.stream().filter(str -> !"李四".equals(str));
name.forEach(s-> System.out.println(s));
list.stream().filter(s->!"王五".equals(s)).forEach(System.out::println);
}
distinct去重
@Test
public void test2(){
Stream<Integer> stream = Stream.of(1, 1, 8, 2, 5, 4, 4, 2, 9, 8, 3);
stream.distinct().forEach(System.out::println);
}
limit截断,只保留前几位
@Test
public void test3(){
Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 0);
stream.limit(5).forEach(System.out::println);
}
skip跳过,跳过几位,与limit相反
@Test
public void test4(){
Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 0);
stream.skip(5).forEach(System.out::println);
}
peek对每个元素进行Lambda操作
@Test
public void test5(){
Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 0);
stream.peek(c->System.out.println(c)).count();
}
sorted排序按自然顺序排序
@Test
public void test6(){
Stream<Integer> stream = Stream.of(11, 23, 53, 4, 4, 55, 76, 7, 83, 29, 60);
stream.distinct().sorted().forEach(System.out::println);
}
map映射成新元素
@Test
public void test7(){
Stream<Integer> stream = Stream.of(11, 23, 53, 4, 4, 55, 76, 7, 83, 29, 60);
stream.distinct().map(m->m+1).forEach(System.out::println);
Stream<String> list = Stream.of("mi", "jd", "taobao", "baidu");
list.map(t->t.toUpperCase()).forEach(System.out::println);
}
所有中间操作方法列表
方 法 | 描 述 |
---|
filter(Predicate p) | 接收 Lambda , 从流中排除某些元素 | distinct() | 筛选,通过流所生成元素的equals() 去除重复元素 | limit(long maxSize) | 截断流,使其元素不超过给定数量 | skip(long n) | 跳过元素,返回一个扔掉了前 n 个元素的流。若流中元素不足 n 个,则返回一个空流。与 limit(n) 互补 | peek(Consumer action) | 接收Lambda,对流中的每个数据执行Lambda体操作 | sorted() | 产生一个新流,其中按自然顺序排序 | sorted(Comparator com) | 产生一个新流,其中按比较器顺序排序 | map(Function f) | 接收一个函数作为参数,该函数会被应用到每个元素上,并将其映射成一个新的元素。 | mapToDouble(ToDoubleFunction f) | 接收一个函数作为参数,该函数会被应用到每个元素上,产生一个新的 DoubleStream。 | mapToInt(ToIntFunction f) | 接收一个函数作为参数,该函数会被应用到每个元素上,产生一个新的 IntStream。 | mapToLong(ToLongFunction f) | 接收一个函数作为参数,该函数会被应用到每个元素上,产生一个新的 LongStream。 | flatMap(Function f) | 接收一个函数作为参数,将流中的每个值都换成另一个流,然后把所有流连接成一个流 |
Stream终结操作
forEach迭代遍历
count返回流中元素总数
allMatch检查是否匹配所有元素
@Test
public void test1(){
boolean b = Stream.of(2, 4, 6, 8).allMatch(t -> t % 2 == 0);
System.out.println(b);
}
anyMatch检查是否至少匹配一个元素
@Test
public void test2(){
boolean b = Stream.of(2, 3, 7, 5).anyMatch(t -> t % 2 == 0);
System.out.println(b);
}
findFirst返回第一个元素
@Test
public void test3(){
Optional<Integer> first = Stream.of(2, 3, 7, 5).findFirst();
System.out.println(first.get());
}
max返回最大值
@Test
public void test4(){
Optional<Integer> max = Stream.of(2, 3, 7, 5).max(Integer::compareTo);
System.out.println(max.get());
}
reduce可以将流中元素反复结合操作起来,得到一个值
@Test
public void test5(){
String reduce = Stream.of("a", "b", "c", "d").reduce("hhh", String::concat);
System.out.println("recoed:"+reduce);
}
collect将流转换为其他形式
@Test
public void test6(){
List<String> collect = Stream.of("a", "b", "c", "d").collect(Collectors.toList());
collect.forEach(System.out::println);
}
所有总结操作的方法列表
方法 | 描述 |
---|
boolean allMatch(Predicate p) | 检查是否匹配所有元素 | boolean anyMatch(Predicate p) | 检查是否至少匹配一个元素 | boolean noneMatch(Predicate p) | 检查是否没有匹配所有元素 | Optional findFirst() | 返回第一个元素 | Optional findAny() | 返回当前流中的任意元素 | long count() | 返回流中元素总数 | Optional max(Comparator c) | 返回流中最大值 | Optional min(Comparator c) | 返回流中最小值 | void forEach(Consumer c) | 迭代 | T reduce(T iden, BinaryOperator b) | 可以将流中元素反复结合起来,得到一个值。返回 T | U reduce(BinaryOperator b) | 可以将流中元素反复结合起来,得到一个值。返回 Optional | R collect(Collector c) | 将流转换为其他形式。接收一个 Collector接口的实现,用于给Stream中元素做汇总的方法 |
|