添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

核心功能代码:

        Integer sum = list.stream().mapToInt(User::getAge).sum();
        System.out.println("年龄总和:" +sum);
        Integer max = list.stream().mapToInt(User::getAge).max().orElse(0);
        System.out.println("年龄 最大:" + max);
        Integer min = list.stream().mapToInt(User::getAge).min().orElse(0);
        System.out.println("年龄 最小:" + min);
        Double average = list.stream().mapToInt(User::getAge).average().orElse(0l);
        System.out.println("年龄 平均:" + df.format(average));

Java8 Stream除了支持Int类型,还支持double 类型和long类型

学生年龄实例:

package com.digipower.test;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class ListTest {
	private static final DecimalFormat df = new DecimalFormat("0.00");//保留两位小数点
	public static void main(String[] args) {
		Random random = new Random();
		List<User> list = new ArrayList<User>();
		for (int i = 1; i <= 5; i++) {
			int age = random.nextInt(10) + 5;// 随机年龄:10-15
			User u = new User(String.valueOf(i), "用户-" + i, age);
			list.add(u);
		Integer sum = list.stream().mapToInt(User::getAge).sum();
        System.out.println("年龄总和:" +sum);
        Integer max = list.stream().mapToInt(User::getAge).max().orElse(0);
        System.out.println("年龄 最大:" + max);
        Integer min = list.stream().mapToInt(User::getAge).min().orElse(0);
        System.out.println("年龄 最小:" + min);
        Double average = list.stream().mapToInt(User::getAge).average().orElse(0l);
        System.out.println("年龄 平均:" + df.format(average));
	static class User {
		private String id;
		private String name;
		private int age;
		public String getId() {
			return id;
		public void setId(String id) {
			this.id = id;
		public String getName() {
			return name;
		public void setName(String name) {
			this.name = name;
		public int getAge() {
			return age;
		public void setAge(int age) {
			this.age = age;
		public User(String id, String name, int age) {
			super();
			this.id = id;
			this.name = name;
			this.age = age;

效果截图:

溫馨提示:針對金融数据类型BigDecimal,求和方式必须使用Stream 类中的reduce函数

学生余额实例:

package com.digipower.test;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.Random;
public class ListTest {
	private static final DecimalFormat df = new DecimalFormat("0.00");//保留两位小数点
	public static void main(String[] args) {
		Random random = new Random();
		List<User> list = new ArrayList<User>();
		for (int i = 1; i <= 5; i++) {
			int age = random.nextInt(10) + 5;// 随机年龄:10-15
			User u = new User(String.valueOf(i), "用户-" + i, age);
			double balance = random.nextDouble() * 100 + 100;//随机金额:100-200
			u.setBalance(new BigDecimal(balance).setScale(BigDecimal.ROUND_HALF_UP, 2));
			list.add(u);
		Integer sum = list.stream().mapToInt(User::getAge).sum();
        System.out.println("年龄总和:" +sum);
        Integer max = list.stream().mapToInt(User::getAge).max().orElse(0);
        System.out.println("年龄 最大:" + max);
        Integer min = list.stream().mapToInt(User::getAge).min().orElse(0);
        System.out.println("年龄 最小:" + min);
        Double average = list.stream().mapToInt(User::getAge).average().orElse(0l);
        System.out.println("年龄 平均:" + df.format(average));
        BigDecimal add = list.stream().map(User::getBalance).reduce(BigDecimal.ZERO, BigDecimal::add);
        System.out.println("金额 总和:" + df.format(add));
        Optional<User> maxBalance = list.stream().max((u1, u2) -> u1.getBalance().compareTo(u2.getBalance()));
        System.out.println("金额 最高:" + df.format(maxBalance.get().getBalance()));
        Optional<User> minBalance = list.stream().min((u1, u2) -> u1.getBalance().compareTo(u2.getBalance()));
        System.out.println("金额 最低:" + df.format(minBalance.get().getBalance()));
	static class User {
		private String id;
		private String name;
		private int age;
		private BigDecimal balance;
		public String getId() {
			return id;
		public void setId(String id) {
			this.id = id;
		public String getName() {
			return name;
		public void setName(String name) {
			this.name = name;
		public int getAge() {
			return age;
		public void setAge(int age) {
			this.age = age;
		public BigDecimal getBalance() {
			return balance;
		public void setBalance(BigDecimal balance) {
			this.balance = balance;
		public User(String id, String name, int age) {
			super();
			this.id = id;
			this.name = name;
			this.age = age;

效果截图

核心功能代码: Integer sum = list.stream().mapToInt(User::getAge).sum(); System.out.println("年龄总和:" +sum); Integer max = list.stream().mapToInt(User::getAge).max().orElse(0); System.out.println("年龄 最大:" + max); Integer mi list.stream().mapToDouble(User::getHeight).sum()//和 list.stream().mapToDouble(User::getHeight).max()//最大 list.stream().mapToDouble(User::getH... 防止集合及值的空指针 // 实例化函数 FunctionCustom<GetSalesDataReportsServiceOutputDto> functionCustom = new FunctionCustom<>(); //使用-》对 clueTodayCount 值求和 functionCustom.functionListL
数值类型求和 ArrayList<Double> sumAmountResult = new ArrayList<Double>(); sumAmountResult.add(111d); sumAmountResult.add(222d); sumAmountResult.add(333d); sumAmountResult.add(444d); double sumChildAmountResult = sumAmountResult.stream().mapToDouble(D
主要利用了reduce方法和Collectors.summing的方法,reduce根据初始值(参数1)和累积函数(参数2)依次对数据流进行操作,第一个值与初始值送入累积函数,后面计算结果和下一个数据流依次送入累积函数实现求和,Collectors.summingXXX()(XXX表示具体数据类型)将流中所有元素视为Long类型,并计算所有元素的总和,下面直接给一个实例: import java.util.ArrayList; import java.util.Collection; import ja
List<User> userlist = userService.findAll(); Integer sum= userlist .stream().collect(Collectors.summingInt(User::getAge)); 其他的操作: summingDouble 求和,Stream的
本文主要讲解:Java 8 Stream之sorted()排序示例:使用java 8 的流式sorted排序List集合 功能说明:以自然序或着自定义Comparator接口排序规则来排序一个流。 功能详细说明: 1、sorted()默认使用自然序排序, 其中的元素必须实现Comparable接口 2、sorted(Comparator<? super T> comparator):我们可以使用lambada 来创建一个Comparator实例。可以按照升序或着降序来排序元素。
要获取 `List<BigDecimal>` 中元素的最大值最小值平均值,你可以使用 `Collections` 类或者流(Stream)来完成。以下是两种不同的实现方式: 1. 使用 `Collections` 类: ```java import java.math.BigDecimal; import java.util.Arrays; import java.util.Collections; import java.util.List; public class Main { public static void main(String[] args) { List<BigDecimal> bigDecimalList = Arrays.asList( new BigDecimal("1.23"), new BigDecimal("4.56"), new BigDecimal("7.89") // 获取最大值 BigDecimal max = Collections.max(bigDecimalList); System.out.println("最大值: " + max); // 获取最小值 BigDecimal min = Collections.min(bigDecimalList); System.out.println("最小值: " + min); // 获取平均值 BigDecimal sum = BigDecimal.ZERO; for (BigDecimal num : bigDecimalList) { sum = sum.add(num); BigDecimal average = sum.divide(BigDecimal.valueOf(bigDecimalList.size()), 2, BigDecimal.ROUND_HALF_UP); System.out.println("平均值: " + average); 在上述示例中,我们创建了一个 `List<BigDecimal>`,名为 `bigDecimalList`,其中包含了几个 `BigDecimal` 对象。然后,我们使用 `Collections.max` 和 `Collections.min` 方法分别获取列表中的最大值最小值。对于平均值的计算,我们使用一个循环来累加列表中的元素,并使用 `divide` 方法将总和除以列表的大小来计算平均值。 运行以上代码,输出将会是: 最大值: 7.89 最小值: 1.23 平均值: 4.26 2. 使用流(Stream): ```java import java.math.BigDecimal; import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) { List<BigDecimal> bigDecimalList = Arrays.asList( new BigDecimal("1.23"), new BigDecimal("4.56"), new BigDecimal("7.89") // 获取最大值 BigDecimal max = bigDecimalList.stream() .max(BigDecimal::compareTo) .orElse(BigDecimal.ZERO); System.out.println("最大值: " + max); // 获取最小值 BigDecimal min = bigDecimalList.stream() .min(BigDecimal::compareTo) .orElse(BigDecimal.ZERO); System.out.println("最小值: " + min); // 获取平均值 BigDecimal sum = bigDecimalList.stream() .reduce(BigDecimal.ZERO, BigDecimal::add); BigDecimal average = sum.divide(BigDecimal.valueOf(bigDecimalList.size()), 2, BigDecimal.ROUND_HALF_UP); System.out.println("平均值: " + average); 在这个示例中,我们使用流的 `max` 和 `min` 方法来获取列表中的最大值最小值。对于平均值的计算,我们使用 `reduce` 方法将列表中的元素累加起来,并使用 `divide` 方法计算平均值。 运行以上代码,输出将会是相同的结果: 最大值: 7.89 最小值: 1.23 平均值: 4.26 希望能对你有所帮助!如果还有其他问题,请随时提问。