데이터 목록을 정리하기 위해 수행 할 데이터 목록과 정리 작업 목록을 승인하는 방법을 만들었습니다.
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
,없고 : 당신이 "여분의 공간"없이 "추가 데이터"할 수 없습니다