Я будую компаратор, який надає можливість сортування в декількох стовпцях для обмеженої рядки. В даний час я використовую метод розбиття з класу String як мій кращий вибір для розбиття необробленого рядка на лексеми.
Це найкращий спосіб перетворити необроблений рядок в масив String? Я буду сортувати мільйони рядків, тому думаю, що підхід має значення.
Здається, працює добре і дуже просто, але не впевнений, що в 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. Ви можете завантажити мій завершений компаратор тут: https://sourceforge.net/projects/multicolumnrowcomparator/
StringUtils.split[PreserveAllTokens](text, delimiter)
.