当前位置: 首页 > 知识库问答 >
问题:

Java 8 Streams:如何调用一次集合。方法并检索多个聚合值的数组[重复]

邬弘化
2023-03-14

我从8Java的Stream API开始。

这是我使用的Person对象:

public class Person {

    private String firstName;
    private String lastName;
    private int age;

    public Person(String firstName, String lastName, int age) {
      this.firstName = firstName;
      this.lastName = lastName;
      this.age = age;
    }

    public String getFirstName() {
      return firstName;
    }

    public String getLastName() {
      return lastName;
    }

    public int getAge() {
      return age;
    }

  }

这是我的代码,它初始化对象列表Person并获取对象的数量、最大年龄和最小年龄,最后创建一个包含这三个值的对象数组:

List<Person> personsList = new ArrayList<Person>();

personsList.add(new Person("John", "Doe", 25));
personsList.add(new Person("Jane", "Doe", 30));
personsList.add(new Person("John", "Smith", 35));

long count = personsList.stream().count();
int maxAge = personsList.stream().mapToInt(Person::getAge).max().getAsInt();
int minAge = personsList.stream().mapToInt(Person::getAge).min().getAsInt();

Object[] result = new Object[] { count, maxAge, minAge };
System.out.println(Arrays.toString(result));

是否可以对stream()方法进行一次调用并直接返回对象数组?

Object[] result = personsList.stream()...count()...max()...min()

共有1个答案

柯瀚玥
2023-03-14

以下是如何使用标准JDK 8 API解决这个问题:

IntSummaryStatistics summary = personsList.stream().collect(
    Collectors.summarizingInt(Person::getAge));
System.out.println("Count: " + summary.getCount());
System.out.println("Max  : " + summary.getMax());
System.out.println("Min  : " + summary.getMin());

结果:

Count: 3
Max  : 35
Min  : 25
 类似资料:
  • 我将从Java8中的流API开始。 我测试了和的解决方案,并计算了每个解决方案的运行时间。 看来解决方案比更有效。 的解决方案似乎比我的解决方案(使用多个流)节省不了多少时间。

  • 问题内容: 我正在使用以下聚合: 这有效,但是我只会得到无用的聚合-我也必须与… 相处 问题答案: 如果您想获取该ID的类别名称, 因此,子聚合(嵌套在上面)为您提供了id的categoryName。

  • 我有索引,其中每个文档都有这样的结构: 我需要计算每个演员对应的电影数量(演员可以在actor_1_name、actor_2_name或actor_3_name字段中) 这3个字段的映射是: 有没有一种方法,我可以聚合的结果,可以结合所有3个演员领域的条款,并给出一个单一的聚合。 目前,我正在为每个actor字段创建单独的聚合,并通过我的JAVA代码将这些不同的聚合合并成一个。 通过创建不同的聚合

  • 我有一个Laravel 5.8项目,我需要加入3个表来显示一些结果。 基本上,我已经将所有自定义id存储在一个名为的表中。 例如,这里有两个自定义ID,我需要检索它们的: 所以我试了一下: 但这是错误的,并向我展示了错误: SQLSTATE[42000]:语法错误或访问冲突:1066不唯一 所以我需要这样说: 然后: 我该怎么做呢?

  • 我试图像这样整合多个数组的数组 要接收此

  • 假设我们有一个DF,其受尊重的用户ID中有重复项,但名称不同,当然也可以是重复项。 目的是分别聚合和计算用户ID及其名称的均值和均方差。一个所需的输出示例: 因此我的问题是: 有哪些选项可以根据UserID聚合Names,而不会丢失信息(Hank被强制插入Ed等,就像sumise()或mutate()一样) 按照我的想法,R必须检查哪个名称对应于用户ID,以及是否匹配;汇总并计算平均值 与此同时,