0
点赞
收藏
分享

微信扫一扫

Java8 list重新生成新的list

眸晓 2024-02-07 阅读 15

Java8中重新生成新的List

在Java8中,通过使用Stream API和Lambda表达式,我们可以轻松地对List进行转换和操作。这使得重新生成一个新的List变得非常简单和高效。本文将介绍如何使用Java8的新特性来重新生成一个新的List,并提供相应的代码示例。

Stream API和Lambda表达式简介

在Java8中,引入了Stream API和Lambda表达式。Stream API是一种处理集合数据的高级抽象,它允许我们以声明性的方式进行操作,而不需要关心底层的实现细节。Lambda表达式是一种函数式编程的概念,它可以让我们以更简洁和清晰的方式编写代码。

重新生成新的List

在Java8中,我们可以使用Stream API的map()方法来对List中的每个元素进行转换,并将转换后的结果收集到一个新的List中。下面是一个示例代码:

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class ListTransformationExample {
    public static void main(String[] args) {
        List<String> fruits = Arrays.asList("apple", "banana", "orange", "grape", "mango");
        
        List<String> upperCaseFruits = fruits.stream()
                                            .map(String::toUpperCase)
                                            .collect(Collectors.toList());
                                            
        System.out.println(upperCaseFruits);
    }
}

上述代码中,我们首先创建了一个包含水果名称的List。然后,我们使用stream()方法将List转换成一个流。接下来,我们使用map()方法将每个水果名称转换为大写形式。最后,我们使用collect(Collectors.toList())方法将转换后的结果收集到一个新的List中。

运行上述代码,输出结果为:[APPLE, BANANA, ORANGE, GRAPE, MANGO],表示成功将原始List中的水果名称转换为大写形式并生成了一个新的List。

过滤List中的元素

除了对List中的元素进行转换,我们还可以使用Stream API的filter()方法来过滤List中的元素。下面是一个示例代码:

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class ListFilteringExample {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
        
        List<Integer> evenNumbers = numbers.stream()
                                           .filter(n -> n % 2 == 0)
                                           .collect(Collectors.toList());
                                            
        System.out.println(evenNumbers);
    }
}

上述代码中,我们首先创建了一个包含数字的List。然后,我们使用stream()方法将List转换成一个流。接下来,我们使用filter()方法筛选出所有偶数。最后,我们使用collect(Collectors.toList())方法将过滤后的结果收集到一个新的List中。

运行上述代码,输出结果为:[2, 4, 6, 8, 10],表示成功过滤出了原始List中的所有偶数并生成了一个新的List。

将List元素映射到多个属性

有时候,我们可能需要从一个对象的List中提取出其中的多个属性,并生成一个新的List。在Java8中,我们可以使用Stream API的flatMap()方法来实现这个功能。下面是一个示例代码:

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class ListTransformationExample {
    public static void main(String[] args) {
        List<Person> persons = Arrays.asList(
            new Person("Alice", 25),
            new Person("Bob", 30),
            new Person("Carol", 35)
        );
        
        List<Integer> ages = persons.stream()
                                    .flatMap(person -> person.getAges().stream())
                                    .collect(Collectors.toList());
                                            
        System.out.println(ages);
    }
}

class Person {
    private String name;
    private List<Integer> ages;
    
    public Person(String name, Integer... ages) {
        this.name = name;
        this.ages = Arrays.asList(ages);
    }
    
    public List<Integer> getAges() {
        return ages;
    }
}

上述代码中,我们首先创建了一个包含Person对象的List。每个Person对象中包含一个姓名和一组年龄。然后,我们使用`

举报

相关推荐

0 条评论