Java 8 Streams:如何调用一次Collection.stream()方法并检索包含多个聚合值的数组
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java 8 Streams:如何调用一次Collection.stream()方法并检索包含多个聚合值的数组,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1627字,纯文字阅读大概需要3分钟。
内容图文
![Java 8 Streams:如何调用一次Collection.stream()方法并检索包含多个聚合值的数组](/upload/InfoBanner/zyjiaocheng/682/ddc074b978744392a94ee9c9de7668f4.jpg)
这个问题已经在这里有了答案: > How to get minimum and maximum value from List of Objects using Java 8 1个
我从Java 8中的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()
解决方法:
以下是使用标准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
内容总结
以上是互联网集市为您收集整理的Java 8 Streams:如何调用一次Collection.stream()方法并检索包含多个聚合值的数组全部内容,希望文章能够帮你解决Java 8 Streams:如何调用一次Collection.stream()方法并检索包含多个聚合值的数组所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。