Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Custom UnaryOperator implementation trong Java


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.