เมธอด replaceAll() ของ interface List รับ object ของ UnaryOperator<E> แสดงถึง operation บน element เดียว นำไปใช้กับทุก element ใน list แล้วแทนที่ค่าเดิมด้วยผลลัพธ์
UnaryOperator<T> เป็น functional interface (extends Function<T,T>) ใช้สำหรับ lambda expressions ที่รับ input และคืนค่า type เดียวกัน
ตัวอย่าง: แปลงเป็นตัวพิมพ์ใหญ่ทั้งหมด
import java.util.ArrayList;
import java.util.function.UnaryOperator;
class Op implements UnaryOperator<String> {
public String apply(String str) {
return str.toUpperCase();
}
}
public class Test {
public static void main(String[] args) throws CloneNotSupportedException {
ArrayList<String> list = new ArrayList<>();
list.add("Java");
list.add("JavaScript");
list.add("CoffeeScript");
list.add("HBase");
list.add("OpenNLP");
System.out.println("Contents of the list: " + list);
list.replaceAll(new Op());
System.out.println("Contents of the list after replace operation:\n" + list);
}
}
ผลลัพธ์
Contents of the list: [Java, JavaScript, CoffeeScript, HBase, OpenNLP]
Contents of the list after replace operation:
[JAVA, JAVASCRIPT, COFFEESCRIPT, HBASE, OPENNLP]
ใช้ Lambda Expression (Java 8+)
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("Java");
list.add("JavaScript");
list.add("CoffeeScript");
list.add("HBase");
list.add("OpenNLP");
System.out.println("Before: " + list);
// Lambda expression แทน class Op
list.replaceAll(s -> s.toUpperCase());
System.out.println("After: " + list);
}
}
ผลลัพธ์
Before: [Java, JavaScript, CoffeeScript, HBase, OpenNLP]
After: [JAVA, JAVASCRIPT, COFFEESCRIPT, HBASE, OPENNLP]
ตัวอย่างเพิ่มเติม
| Operation | Lambda | Input → Output |
|---|---|---|
| เพิ่ม prefix | s -> "ITEM_" + s | "apple" → "ITEM_apple" |
| ตัด whitespace | String::trim | " hello " → "hello" |
| แทนที่ substring | s -> s.replace("Java", "Kotlin") | "Java 8" → "Kotlin 8" |
| คำนวณความยาว | String::length | "hello" → 5 (type เปลี่ยนเป็น Integer!) |