常用方法可被分成两种:
- 延迟方法: 返回值类型仍然是 Stream 接口自身类型的方法,因此支持链式调用。
- 终结方法:返回值类型不再是 Stream 接口自身类型的方法,因此不再支持类似 StringBuilder 那样的链式调用。本小节中,终结方法包括
count
和 forEach
方法。
1.逐一处理:forEach
import java.util.List;
public class DemoforEach {
public static void main(String[] args) {
List<Integer> list = List.of(1,3,6,45,4);
list.stream().forEach(i-> System.out.println(i));
}
}
2.过滤:filter
import java.util.List;
import java.util.stream.Stream;
public class Demofilter {
public static void main(String[] args) {
List<Integer> list = List.of(12, 3, 4, 23, 5, 6, 7, 15, 9);
Stream<Integer> stream = list.stream();
Stream<Integer> stream1 = stream.filter(i -> i >= 6);
stream1.forEach(i -> System.out.println(i));
}
}
3.映射:map
import java.util.stream.Stream;
public class Demo01map {
public static void main(String[] args) {
Stream<String> stream01 = Stream.of("1","2","4","6","5");
Stream<Integer> stream02 = stream01.map(str->Integer.parseInt(str)+10);
stream02.forEach(i-> System.out.println(i));
}
}
4.统计个数:count
import java.util.stream.Stream;
public class DemoCount {
public static void main(String[] args) {
Stream<Integer> stream = Stream.of(1,2,3,4,5,11,2,31,22,45,78);
long size = stream.count();
System.out.println(size);
}
}
5.取用前n个:limit(n)
import java.util.ArrayList;
import java.util.stream.Stream;
public class DemoLimit {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("1号");
list.add("2号");
list.add("3号");
list.add("4号");
list.add("5号");
list.add("6号");
Stream<String> stream = list.stream().limit(4);
stream.forEach(i-> System.out.println(i));
}
}
6.跳过前n个:skip(n)
import java.util.ArrayList;
import java.util.stream.Stream;
public class Demoskip {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("1号");
list.add("2号");
list.add("3号");
list.add("4号");
list.add("5号");
list.add("6号");
Stream<String> stream = list.stream().skip(4);
stream.forEach(i-> System.out.println(i));
}
}
6.组合:concat
import java.util.stream.Stream;
public class Democoncat {
public static void main(String[] args) {
Stream<String> stream01 = Stream.of("1","2","3");
Stream<String> stream02 = Stream.of("7","8","9");
Stream<String> stream = Stream.concat(stream01,stream02);
stream.forEach(i-> System.out.println(i));
}
}