在Java中,虽然没有像Python那样直接的列表理解(list comprehension)语法,但可以通过流(Stream)API和Lambda表达式来实现类似的功能。以下是几种常见的实现方式:
假设我们有一个整数列表,我们想要得到所有偶数的平方:
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class ListComprehensionExample {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
List<Integer> evenSquares = numbers.stream()
.filter(n -> n % 2 == 0)
.map(n -> n * n)
.collect(Collectors.toList());
System.out.println(evenSquares); // 输出: [4, 16, 36, 64, 100]
}
}
如果我们对整数进行数值操作,可以使用IntStream
来提高性能:
import java.util.stream.IntStream;
public class IntStreamExample {
public static void main(String[] args) {
int[] numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int sumOfSquares = IntStream.of(numbers)
.filter(n -> n % 2 == 0)
.map(n -> n * n)
.sum();
System.out.println(sumOfSquares); // 输出: 220
}
}
假设我们有一个学生列表,我们想要得到所有成绩大于80分的学生姓名:
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
class Student {
private String name;
private int score;
public Student(String name, int score) {
this.name = name;
this.score = score;
}
public String getName() {
return name;
}
public int getScore() {
return score;
}
}
public class ComplexStreamExample {
public static void main(String[] args) {
List<Student> students = Arrays.asList(
new Student("Alice", 85),
new Student("Bob", 75),
new Student("Charlie", 90),
new Student("David", 60)
);
List<String> highScoreStudents = students.stream()
.filter(s -> s.getScore() > 80)
.map(Student::getName)
.collect(Collectors.toList());
System.out.println(highScoreStudents); // 输出: [Alice, Charlie]
}
}
通过这些示例,你可以看到Java中的流API和Lambda表达式如何实现类似列表理解的功能。
领取专属 10元无门槛券
手把手带您无忧上云