Java中的Collectors toList()方法及其示例

Java中的Collectors toList()方法及其示例

Java中的Stream API提供了一个十分强大的功能,不仅可以让我们进行高效的集合操作,同时也方便了我们进行并行操作。而Stream中的collect()方法则提供了将Stream转换为不同输出的功能,其中toList()方法就是将Stream转换为List集合的方法。在本文中,我们将详细介绍Java中的Collectors toList()方法的使用以及相应的示例。

Collectors toList()方法的概述

Java中的Collectors类提供了很多方法用于对Stream进行不同类型的数据聚合操作。而toList()方法则是将Stream中的元素收集为一个List集合。该方法的函数签名如下:

public static <T> Collector<T, ?, List<T>> toList()

该函数的返回值类型为List<T>,表示元素类型为T的List集合。在使用toList()方法的时候,我们可以不提供任何参数,直接使用Collectors.toList()方法即可。

接下来,我们将通过一些示例代码来说明如何具体使用Collectors toList()方法。

使用Collectors toList()方法的示例

下面我们将通过一些具体的示例来演示如何使用Collectors toList()方法。

示例一:将一个数组转换为List集合

我们会先定义一个数组,然后通过Stream API将数组中的元素转换为List集合。

String[] strArr = {"Hello", "World", "Java"};
List<String> strList = Arrays.stream(strArr)
                             .collect(Collectors.toList());
System.out.println(strList);

上述代码中,首先我们定义了一个类型为String的数组strArr,该数组中包含了三个不同的字符串。

接着,我们通过Arrays类中的stream()方法将该数组转换为Stream流。然后我们通过collect(Collectors.toList())方法将Stream中的元素转换为一个List集合对象。最后,我们将List集合输出到控制台,以便查看toArray()方法的输出结果。

输出结果如下:

[Hello, World, Java]

可以看到,通过Collectors.toList()方法,我们将String类型的数组转换为了List类型的集合对象。

示例二:将User集合中的年龄过滤成大于20的元素的List集合

我们会先定义一个名为User的类,类包含了name和age两个属性。然后我们将多个User对象放置到一个List集合中,最后使用Collectors.toList()方法将其中的年龄大于20的元素过滤出来,并将其转换为一个List集合输出。

class User {
    private String name;
    private int age;
    public User(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}

List<User> userList = new ArrayList<>();
userList.add(new User("Alice", 24));
userList.add(new User("Jack", 19));
userList.add(new User("Lucy", 28));
List<User> ageList = userList.stream()
        .filter(u -> u.getAge() >= 20).collect(Collectors.toList());
System.out.println(ageList);

上述代码中,我们首先定义了一个名为User的类,该类包含了两个属性,分别为name和age。我们然后通过该类创建了多个User对象,并将这些User对象放置到了一个ArrayList集合中。

接着,我们通过userList.stream()方法得到该List集合对应的Stream流,然后通过filter()方法过滤年龄大于20的元素。

最后,我们使用Collectors.toList()方法将Stream流中的元素转换为一个新的List集合对象,到控制台以便查看输出结果。

输出结果如下:

[User{name='Alice', age=24}, User{name='Lucy', age=28}]

可以看到,通过Collectors.toList()方法,我们成功地将User集合中年龄大于20的元素过滤出来,并将它们转换为了List集合。

示例三:将Map集合按值排序然后转换为List集合

我们会先定义一个名为Map<String, Integer>的集合,该集合包含了若干个键值对,其中key为String类型,value为Integer类型。然后我们使用Collectors.toList()方法将这个Map集合转换为一个排序后的List集合。

Map<String, Integer> map = new HashMap<>();
map.put("Tom", 60);
map.put("John", 80);
map.put("James", 70);
List<Map.Entry<String, Integer>> resultList = map.entrySet().stream()
        .sorted(Map.Entry.comparingByValue())
        .collect(Collectors.toList());
System.out.println(resultList);

上述代码中,我们首先定义了一个名为map的Map集合,该集合包含了多个键值对。然后,我们通过map.entrySet()方法得到该Map集合中的所有元素所组成的Set集合。

接着,我们对该Set集合使用Stream API,并通过sorted(Map.Entry.comparingByValue())方法将Set集合中元素按照value值进行排序。

最后,我们使用Collectors.toList()方法将排序后的结果转换为一个List集合,并输出到控制台以便查看结果。

输出结果如下:

[Tom=60, James=70, John=80]

可以看到,通过Collectors.toList()方法,我们成功地将Map集合按照value值进行了排序,并将其转换为了List集合。

结论

通过上述示例的演示,我们了解了Java中的Collectors toList()方法的基本用法,再结合其他Stream API的函数,我们可以用它来满足不同类型的数据聚合需求。在工作或学习中,有需要对Stream对象进行收集为List集合的操作时,我们可以选择使用该方法。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程