BigDecimal求最大值最小值
时间: 2023-11-04 15:49:54 浏览: 58
BigDecimal类提供了比较两个BigDecimal对象的方法,可以用于求最大值和最小值。下面是一个示例代码:
```java
import java.math.BigDecimal;
public class BigDecimalDemo {
public static void main(String[] args) {
BigDecimal num1 = new BigDecimal("12.345");
BigDecimal num2 = new BigDecimal("23.456");
BigDecimal num3 = new BigDecimal("34.567");
// 求最大值
BigDecimal max = num1.max(num2).max(num3);
System.out.println("最大值为: " + max);
// 求最小值
BigDecimal min = num1.min(num2).min(num3);
System.out.println("最小值为: " + min);
}
}
```
输出结果:
```
最大值为: 34.567
最小值为: 12.345
```
在代码中,通过使用`max()`和`min()`方法,可以比较多个BigDecimal对象的大小,从而求得最大值和最小值。
相关问题
stream流求最大值
要使用Stream流求最大值,可以使用reduce()方法或者max()方法。在Java中,可以根据不同的数据类型选择不同的方法。
对于BigDecimal类型,可以使用stream().reduce()方法来求最大值。例如,假设有一个包含BigDecimal类型的列表eqpUPHList,可以使用以下代码来求最大值:
BigDecimal maxUPH = eqpUPHList.stream()
.map(EqpUPHVO::getUphData)
.reduce(BigDecimal::max)
.orElse(BigDecimal.ZERO);
对于Integer类型,可以使用stream().max()方法来求最大值。例如,假设有一个包含Integer类型的列表list,可以使用以下代码来求最大值:
int max = list.stream()
.max(Integer::compareTo)
.orElse(0);
同样地,对于Long类型和Double类型,也可以使用相应的方法来求最大值。例如,对于Long类型的列表list,可以使用以下代码来求最大值:
long max = list.stream()
.max(Long::compareTo)
.orElse(0L);
对于Double类型的列表list,可以使用以下代码来求最大值:
double max = list.stream()
.max(Double::compareTo)
.orElse(0.0);
以上是使用Stream流求最大值的方法示例。具体的实现可以根据实际情况进行调整和修改。\[1\]\[2\]\[3\]
#### 引用[.reference_title]
- *1* [java中各种类型用Stream流求最大值最小值](https://blog.csdn.net/weixin_43296313/article/details/122596555)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [JAVA stream流之reduce求最大值、最小值](https://blog.csdn.net/qq_41844287/article/details/126365266)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
- *3* [使用stream流进行集合排序取最大值,根据集合中的bigdemal属性排序(正序反序)并取最大值](https://blog.csdn.net/qq_39143103/article/details/118599089)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
List<BigDecimal>如何获取元素的最大值、最小值、以及平均值
要获取 `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
```
希望能对你有所帮助!如果还有其他问题,请随时提问。