Untuk membersihkan daftar data, saya telah membuat metode yang menerima daftar data dan daftar operasi pembersihan yang harus dilakukan.
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;
}
Masalahnya di sini adalah bahwa kami membuat seluruh daftar lagi sebagai Collectors.toList()
mengembalikan daftar baru. Bisakah kita mencapai hasil yang sama tanpa menggunakan ruang ekstra?
Di bawah ini adalah kode untuk doa:
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()
mengembalikanCollector
bukanList
, dan tidak: Anda tidak dapat memiliki "data ekstra" tanpa "ruang ekstra"