【面试题精讲】如何使用Stream的聚合功能

2023-09-09 14:18:05 浏览数 (2)

有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top

首发博客地址

系列文章地址

求和(Sum):
代码语言:javascript复制
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
int sum = numbers.stream().mapToInt(Integer::intValue).sum();
System.out.println("Sum: "   sum);
  1. 求平均值(Average):
代码语言:javascript复制
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
double average = numbers.stream().mapToInt(Integer::intValue).average().orElse(0.0);
System.out.println("Average: "   average);
  1. 最大值(Max):
代码语言:javascript复制
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
int max = numbers.stream().mapToInt(Integer::intValue).max().orElse(0);
System.out.println("Max: "   max);
  1. 最小值(Min):
代码语言:javascript复制
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
int min = numbers.stream().mapToInt(Integer::intValue).min().orElse(0);
System.out.println("Min: "   min);
  1. 计数(Count):可以使用 count()方法来计算Stream中元素的个数。
代码语言:javascript复制
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
long count = numbers.stream().count();
System.out.println("Count: "   count);
  1. 连接字符串(Joining):可以使用 collect()方法结合 Collectors.joining()来将Stream中的元素连接成一个字符串。
代码语言:javascript复制
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
String joinedNames = names.stream().collect(Collectors.joining(", "));
System.out.println("Joined Names: "   joinedNames);
  1. 分组(Grouping):可以使用 collect()方法结合 Collectors.groupingBy()来根据某个属性对Stream中的元素进行分组。
代码语言:javascript复制
List<Person> people = Arrays.asList(
    new Person("Alice", 25),
    new Person("Bob", 30),
    new Person("Charlie", 25)
);
Map<Integer, List<Person>> peopleByAge = people.stream().collect(Collectors.groupingBy(Person::getAge));
System.out.println("People grouped by age: "   peopleByAge);
  1. 求和(Summarizing):可以使用 collect()方法结合 Collectors.summarizingInt()等方法来获取元素的汇总信息,如求和、平均值、最大值、最小值等。
代码语言:javascript复制
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
IntSummaryStatistics stats = numbers.stream().collect(Collectors.summarizingInt(Integer::intValue));
System.out.println("Sum: "   stats.getSum());
System.out.println("Average: "   stats.getAverage());
System.out.println("Max: "   stats.getMax());
System.out.println("Min: "   stats.getMin());

0 人点赞