java 中的 unaryoperator 是函数式接口,专门用于处理单参数且返回类型与参数相同的运算。要对数值进行计算,只需实现其唯一的抽象方法 t apply(t t),通常通过 lambda 表达式或方法引用传入具体的数学逻辑,例如将输入值乘以 2 或加上一个固定常数。

如何对 Integer 类型的列表执行平方运算
针对整数列表的平方需求,可以直接使用 UnaryOperator 定义转换规则,并通过 map() 方法应用到集合元素上。该操作会遍历列表,将每个整数作为参数传递给定义的运算逻辑,最终生成包含所有平方值的新列表。

import java.util.Arrays;
import java.util.List;
import java.util.function.UnaryOperator;
public class SquareExample {
public static void main(String[] args) {
List<integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
UnaryOperator<integer> squareOp = n -> n * n;
List<integer> squaredNumbers = numbers.stream()
.map(squareOp)
.toList();
System.out.println(squaredNumbers); // [1, 4, 9, 16, 25]
}
}</integer></integer></integer>
如何对 Double 类型的金额应用折扣系数
在处理浮点数时,可以使用 UnaryOperator 来定义折扣逻辑。假设需要给所有价格打八折,可以创建一个接收原价并返回折后价的运算符,然后将其应用于价格列表中,确保计算精度和类型一致性。

import java.util.Arrays;
import java.util.List;
import java.util.function.UnaryOperator;
public class DiscountExample {
public static void main(String[] args) {
List<double> prices = Arrays.asList(100.0, 200.0, 300.0);
double discountRate = 0.8;
UnaryOperator<double> discountOp = price -> price * discountRate;
List<double> discountedPrices = prices.stream()
.map(discountOp)
.toList();
System.out.println(discountedPrices); // [80.0, 160.0, 240.0]
}
}</double></double></double>
当输入值为 null 时 UnaryOperator 会抛出什么异常
如果在使用 UnaryOperator 时传入 null 值,具体行为取决于内部实现的逻辑。对于基本类型包装类(如 Integer),若 Lambda 表达式中涉及自动拆箱(例如 n * n),则会直接抛出 NullPointerException;若仅进行对象引用操作且不触发拆箱,则可能正常返回 null 或根据业务逻辑处理。因此,在流式操作中需确保数据源非空或使用 filter(n -> n != null) 进行过滤。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











