Java8中Stream的详细使用方法大全
本文将详细介绍Java8中Stream的使用方法,包括Stream的定义、Stream常用操作、中间操作和终止操作等。
一、Stream的定义
Stream是Java 8中的新特性,它是对数据集合进行流式操作的API。使用Stream可以让我们更方便地对集合进行操作,提高代码的可读性和代码的简洁性。
二、Stream常用操作
- 获取Stream对象
要使用Stream操作集合,首先需要获取Stream对象。可以通过以下方法获取Stream对象:
- 使用Collection接口的stream()方法
- 使用Arrays类的stream()方法
- 使用Stream类的of()方法
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
Stream<String> stream = list.stream();
String[] arr = {"a", "b", "c"};
Stream<String> stream2 = Arrays.stream(arr);
Stream<String> stream3 = Stream.of("a", "b", "c");
- 中间操作
中间操作是Stream对象中的一系列链式调用操作,可以对数据流进行转换、筛选、排序、去重等一系列操作。中间操作使用完不会立即执行,只有调用了终止操作才会执行。
// 筛选操作,过滤掉长度小于3的元素
Stream<String> newStream = stream.filter(s -> s.length() >= 3);
// 转换操作,将元素都转换为大写形式
Stream<String> newStream2 = stream.map(s -> s.toUpperCase());
// 排序操作
Stream<String> newStream3 = stream.sorted();
// 去重操作
Stream<String> newStream4 = stream.distinct();
- 终止操作
终止操作是Stream对象中的最后一步操作,一旦调用了终止操作,中间操作就会被一次性执行。终止操作可以返回一个值,也可以不返回任何值。常见的终止操作包括forEach、count、reduce、collect等。
// forEach操作,对集合中的每个元素执行操作
stream.forEach(System.out::println);
// count操作,返回集合中元素的个数
long count = stream.count();
// reduce操作,对集合中的元素进行操作并返回一个值
Optional<String> s = stream.reduce((s1, s2) -> s1 + s2);
// collect操作,将集合中的元素收集到一个容器中
List<String> list = stream.collect(Collectors.toList());
三、示例说明
以下是两个示例代码:
- 将集合中的学生按照分数高低进行排序
List<Student> list = new ArrayList<>();
list.add(new Student("Tom", 80));
list.add(new Student("Jerry", 70));
list.add(new Student("Tony", 90));
list.stream()
.sorted((s1, s2) -> s2.getScore() - s1.getScore())
.forEach(System.out::println);
- 求集合中所有学生的总分数
List<Student> list = new ArrayList<>();
list.add(new Student("Tom", 80));
list.add(new Student("Jerry", 70));
list.add(new Student("Tony", 90));
int totalScore = list.stream()
.mapToInt(Student::getScore)
.sum();
System.out.println(totalScore);
四、总结
本文介绍了Java8中Stream的定义、常用操作、中间操作和终止操作等内容,并且通过两个示例代码展示了Stream的具体使用方法。使用Stream可以使代码更加简洁明了,提高代码的可读性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java8中Stream的详细使用方法大全 - Python技术站