สำหรับการล้างรายการข้อมูลฉันได้สร้างวิธีการที่ยอมรับรายการข้อมูลและรายการการดำเนินการล้างที่จะดำเนินการ
public <T> List<T> cleanData(List<T> data, List<Function<T, T>> cleanOps) {
    List<T>dataNew=data.stream().map((str) -> {
        T cleanData = str;
        for(Function<T,T> function:cleanOps) {
            cleanData=function.apply(cleanData);
        }
        return cleanData;
    }).collect(Collectors.toList());
    return dataNew;
}ปัญหาที่นี่คือเรากำลังสร้างรายการทั้งหมดอีกครั้งเมื่อCollectors.toList()ส่งคืนรายการใหม่ เราสามารถบรรลุผลลัพธ์เดียวกันโดยไม่ต้องใช้พื้นที่เพิ่มเติมหรือไม่
ด้านล่างนี้เป็นรหัสสำหรับการร้องขอ:
public void processData() {
    List<Function<String, String>> cleanOps = new ArrayList<>();
    cleanOps.add(String::toLowerCase);
    cleanOps.add(str -> str.replaceAll(" ", ""));
    List<String> data = new ArrayList<>();
    data.add("John Doe");
    data.add("Jane Doe");
    System.out.println(Arrays.toString(cleanData(data, cleanOps).toArray()));
}
toList()ส่งกลับCollectorไม่ใช่List, และไม่: คุณไม่สามารถมี "ข้อมูลพิเศษ" โดยไม่มี "พื้นที่พิเศษ"