在Java中,Stream是一种用于处理集合数据的流式操作api。它提供了一种简洁、灵活、高效的方式来对集合进行各种操作,如过滤、映射、排序等。下面是一些Stream的常用功能和详细的代码示例: 创
在Java中,Stream
是一种用于处理集合数据的流式操作api。它提供了一种简洁、灵活、高效的方式来对集合进行各种操作,如过滤、映射、排序等。下面是一些Stream
的常用功能和详细的代码示例:
创建流:
从集合创建流:stream()
方法可以从集合创建一个流。
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);Stream<Integer> stream = numbers.stream();
从数组创建流:Arrays.stream()
方法可以从数组创建一个流。
int[] array = {1, 2, 3, 4, 5};IntStream stream = Arrays.stream(array);
使用Stream.of()
创建流:可以使用Stream.of()
方法创建一个包含指定元素的流。
Stream<String> stream = Stream.of("a", "b", "c");
过滤:
filter()
方法过滤流中的元素,只保留满足给定条件的元素。List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);Stream<Integer> evenNumbers = numbers.stream().filter(n -> n % 2 == 0);
映射:
map()
方法将流中的元素进行转换。List<String> names = Arrays.asList("Alice", "Bob", "Charlie");Stream<Integer> nameLengths = names.stream().map(String::length);
排序:
sorted()
方法对流中的元素进行排序。List<Integer> numbers = Arrays.asList(5, 3, 1, 4, 2);Stream<Integer> sortedNumbers = numbers.stream().sorted();
收集:
collect()
方法将流中的元素收集到一个集合中。List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);List<Integer> evenNumbers = numbers.stream().filter(n -> n % 2 == 0).collect(Collectors.toList());
统计:
count()
方法获取流中元素的数量。List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);long count = numbers.stream().count();
匹配:
使用anyMatch()
方法判断流中是否存在满足给定条件的元素。
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);boolean hasEvenNumber = numbers.stream().anyMatch(n -> n % 2 == 0);
使用allMatch()
方法判断流中的所有元素是否都满足给定条件。
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);boolean allEvenNumbers = numbers.stream().allMatch(n -> n % 2 == 0);
使用noneMatch()
方法判断流中是否没有满足给定条件的元素。
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);boolean noNegativeNumbers = numbers.stream().noneMatch(n -> n < 0);
分组操作和分组后再进行排序操作:
假设我们有一个包含学生对象的列表,每个学生对象包含姓名和年龄属性。我们想要按照学生的年龄进行分组,并且在每个组内按照姓名进行排序。
首先,我们定义一个Student
类表示学生对象:
class Student { private String name; private int age; public Student(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; }}
import java.util.Arrays;import java.util.Comparator;import java.util.List;import java.util.Map;import java.util.stream.Collectors;public class Main { public static void main(String[] args) { List<Student> students = Arrays.asList( new Student("Alice", 20), new Student("Bob", 18), new Student("Charlie", 20), new Student("David", 19), new Student("Eve", 18) ); // 按照年龄进行分组,并在每个组内按照姓名进行排序 Map<Integer, List<Student>> groupedAndSorted = students.stream() .sorted(Comparator.comparing(Student::getName)) // 按照姓名排序 .collect(Collectors.groupingBy(Student::getAge)); // 按照年龄分组 // 输出分组和排序结果 groupedAndSorted.forEach((age, group) -> { System.out.println("Age: " + age); group.forEach(student -> System.out.println(" " + student.getName())); }); }}
Age: 18 Bob EveAge: 19 DavidAge: 20 Alice Charlie
sorted()
方法对学生列表进行排序,按照姓名进行升序排序。然后,使用groupingBy()
方法按照学生的年龄进行分组,返回一个Map
,其中键是年龄,值是具有相同年龄的学生列表。最后,我们通过遍历Map
并输出结果。推荐一个ChatGPT使用渠道:点击直达
来源地址:https://blog.csdn.net/kkwyting/article/details/133297260
--结束END--
本文标题: 【Stream流】java中Stream流详细使用方法
本文链接: https://www.lsjlt.com/news/421299.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-04-01
2024-04-03
2024-04-03
2024-01-21
2024-01-21
2024-01-21
2024-01-21
2023-12-23
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0