stream流怎么判断正负数,判断的那个值是BigDecimal类型
时间: 2024-10-27 18:04:05 浏览: 15
在Java中,如果你有一个`Stream<BigDecimal>`的流,想要判断其中每个元素是否为正数或者负数,你可以使用`filter()`函数配合`Math.signum()`方法。`Math.signum()`会返回一个整数值,表示其参数是正数(-1),零(0)还是负数(1)。
下面是一个简单的示例:
```java
import java.math.BigDecimal;
import java.util.stream.Stream;
public Stream<BigDecimal> checkSigns(Stream<BigDecimal> numbers) {
return numbers.filter(number -> Math.signum(number.doubleValue()) > 0);
}
```
这个例子中,`filter()`函数会保留所有大于0(即正数)的`BigDecimal`。如果需要同时处理正负数,可以稍微调整一下:
```java
public Stream<BigDecimal> checkBothSides(Stream<BigDecimal> numbers) {
return numbers.filter(number -> Math.abs(Math.signum(number.doubleValue())) == 1);
}
```
这将区分出所有的正数(正值和负值)。
相关问题
BigDecimal判断正负数
可以使用BigDecimal的compareTo方法来判断正负数。如果返回值为1,则表示该BigDecimal对象大于0;如果返回值为-1,则表示该BigDecimal对象小于0;如果返回值为0,则表示该BigDecimal对象等于0。
示例代码如下:
```
BigDecimal num = new BigDecimal("-123.45");
int result = num.compareTo(BigDecimal.ZERO);
if (result > 0) {
System.out.println("num是正数");
} else if (result < 0) {
System.out.println("num是负数");
} else {
System.out.println("num等于0");
}
```
List<BigDecimal> 计算平均值 用stream流
在Java中,如果你有一个`List<BigDecimal>`类型的列表,你可以使用Stream API来计算其平均值。以下是使用流(Stream)的方式:
```java
import java.util.List;
import java.math.BigDecimal;
List<BigDecimal> numbers = ... // 你的BigDecimal列表
BigDecimal average = numbers.stream()
.map(BigDecimal::doubleValue) // 转换为double以便于数学运算
.average() // 使用average()方法计算平均值
.orElse(BigDecimal.ZERO); // 如果列表为空,返回0作为默认值
System.out.println("平均值为:" + average);
```
这里我们首先将`BigDecimal`转换为`Double`,因为Stream API直接操作的是原始数值类型。然后调用`average()`方法获取平均值,如果列表为空则会返回`Optional双精度浮点数`,所以我们使用`orElse()`提供一个默认值。
阅读全文