UnaryOperator Interface
java.util.function.UnaryOperator - functional interface đại diện operation trên 1 operand kiểu T, trả về kiểu T. Extends Function.
Implement tùy chỉnh
import java.util.ArrayList;
import java.util.function.UnaryOperator;
class Op implements UnaryOperator {
public String apply(String str) {
return str.toUpperCase();
}
}
public class Test {
public static void main(String[] args) {
ArrayList list = new ArrayList<>();
list.add("Java");
list.add("JavaScript");
list.add("CoffeeScript");
list.add("HBase");
list.add("OpenNLP");
System.out.println("Gốc: " + list);
list.replaceAll(new Op());
System.out.println("Sau: " + list);
}
}
Kết quả
Gốc: [Java, JavaScript, CoffeeScript, HBase, OpenNLP]
Sau: [JAVA, JAVASCRIPT, COFFEESCRIPT, HBASE, OPENNLP]
Dùng Lambda (Java 8+)
// Lambda expression
list.replaceAll(s -> s.toUpperCase());
// Method reference
list.replaceAll(String::toUpperCase);
// Complex logic
list.replaceAll(s -> {
if (s.length() > 5) return s.toLowerCase();
else return s.toUpperCase();
});
Use cases
- Transform in-place: normalize data, format, validate+fix
- Kết hợp với Stream:
list.stream().map(op).collect(...)nếu không muốn mutate. - Primitive specialization:
IntUnaryOperator,LongUnaryOperator,DoubleUnaryOperator.