구분 된 문자열에서 다중 열 정렬 기능을 제공하는 비교기를 작성 중입니다. 현재 원시 문자열을 토큰으로 분할하기 위해 선호하는 선택으로 String 클래스의 split 메소드를 사용하고 있습니다.
이것이 원시 문자열을 문자열 배열로 변환하는 가장 좋은 방법입니까? 나는 수백만 행을 정렬하므로 접근 방식이 중요하다고 생각합니다.
잘 실행되는 것처럼 보이며 매우 쉽지만 Java에 더 빠른 방법이 있는지 확실하지 않습니다.
내 비교기에서 정렬이 작동하는 방법은 다음과 같습니다.
public int compare(String a, String b) {
String[] aValues = a.split(_delimiter, _columnComparators.length);
String[] bValues = b.split(_delimiter, _columnComparators.length);
int result = 0;
for( int index : _sortColumnIndices ) {
result = _columnComparators[index].compare(aValues[index], bValues[index]);
if(result != 0){
break;
}
}
return result;
}
다양한 접근 방식을 벤치마킹 한 후 믿거 나 말거나 최신 버전의 Java를 사용하여 split 방법이 가장 빠릅니다. 완성 된 비교기를 여기에서 다운로드 할 수 있습니다 : https://sourceforge.net/projects/multicolumnrowcomparator/
StringUtils.split[PreserveAllTokens](text, delimiter)
.