欢迎访问宙启技术站
智能推送

Java中如何使用Stream Collectors收集器

发布时间:2023-05-18 20:34:15

Java中的Stream是一种用于处理集合数据的便捷工具,提供了一种比传统循环更加高效且易于理解的方法来处理数据。收集器(Collectors)是Stream API中的一种重要概念,它提供了一种可以将Stream中元素收集到集合中的方式,从而可以将Stream处理后的结果转化为集合或其他数据结构。

在使用Collectors收集器之前,我们应该先了解以下四个方法的作用:

1. toList():将Stream元素收集到List中;

2. toSet():将Stream元素收集到Set中,去除重复元素;

3. toCollection():将Stream元素收集到指定类型的集合中;

4. toMap():将Stream中元素转化为Map。

下面将详细介绍Collectors收集器的使用。

1. 收集到List中

使用Collectors.toList()可以将Stream中的元素收集到List中,示例如下:

List<String> names = Arrays.asList("Tom", "Jerry", "John", "Peter");
List<String> newList = names.stream().filter(name -> name.length() > 3).collect(Collectors.toList());

在上述代码中,将满足条件(长度大于3)的元素收集到List中。

2. 收集到Set中

使用Collectors.toSet()可以将Stream中的元素收集到Set中,示例如下:

List<String> names = Arrays.asList("Tom", "Jerry", "John", "Peter");
Set<String> newSet = names.stream().filter(name -> name.length() > 3).collect(Collectors.toSet());

在上述代码中,将满足条件(长度大于3)的元素收集到Set中。

3. 收集到指定类型的集合中

使用Collectors.toCollection()可以将Stream中的元素收集到指定类型的集合中,示例如下:

List<String> names = Arrays.asList("Tom", "Jerry", "John", "Peter");
ArrayList<String> newList = names.stream().filter(name -> name.length() > 3).collect(Collectors.toCollection(ArrayList::new));

在上述代码中,将满足条件(长度大于3)的元素收集到ArrayList中。

4. 收集为Map

使用Collectors.toMap()可以将Stream中元素转化为Map,示例如下:

List<Student> students = new ArrayList<>();
students.add(new Student("Tom", 18));
students.add(new Student("Jerry", 19));
students.add(new Student("John", 20));
students.add(new Student("Peter", 21));
Map<String, Integer> studentMap = students.stream().collect(Collectors.toMap(Student::getName, Student::getAge));

在上述代码中,将List中的Student对象转化为以姓名为Key,年龄为Value的Map。

除了上述四种常用的收集方式,Collectors还提供了其他更加复杂的收集方式,例如groupingBy()、partitioningBy()等,它们在实际使用中能够轻松地处理复杂的集合操作。

总结来说,Stream Collectors收集器提供了一种便捷的方式来操作集合数据,能够大大简化代码实现,在项目开发中具有较广的应用场景,希望读者能够掌握Collectors的使用。