public interface IStringRowsListSorter { /** * Сортирует переданный список записей (каждая запись - набор колонок) таблицы по указанной колонке по следующим правилам: * <ul> * <li>в колонке могут быть null и пустые значения - строки с null-значениями должны быть первыми, затем строки с пустым значением, затем все остальные,</li> * <li>строка бьется на подстроки следующим образом: выделяем непрерывные максимальные фрагменты строки, состоящие только из цифр, и считаем набором подстрок эти фрагменты и все оставшиеся от такого разбиения фрагменты строки</li> * <li>при сравнении строк осуществляется последовательное сравнение их подстрок до первого несовпадения,</li> * <li>если обе подстроки состоят из цифр - то при сравнении они интерпретируются как целые числа (вначале должно идти меньшее число), в противном случае - как строки,</li> * <li>сортировка должна быть устойчива к исходной сортировке списка - т.е., если строки (в контексте указанных правил сравнения) неразличимы, то сортировка не должна менять их местами.</li> * </ul> * * @param rows список записей таблицы (например, результат sql select), которые нужно отсортировать по указанной колонке * @param columnIndex индекс колонки, по которой нужно провести сортировку */ void sort(List<String[]> rows, int columnIndex); } 

An implementation of the class in which the interface is inherited. But only the lines are compared. It is not entirely clear how to implement a comparison / ordering of substrings. It is clear that you need to use String methods, but how to implement it so that it is sorted in the required order?

 public void sort(final List<String[]> rows, final int columnIndex) { Collections.sort(rows, new Comparator<String[]>() { @Override public int compare(String[] o1, String[] o2) { return o1[columnIndex].compareTo(o2[columnIndex]); } }); } 
  • And there is an example of such a line? The question is what is the separator for this line. - Riĥard Brugekĥaim
  • I asked another - how to implement a comparator. - Mr.Ki.D.
  • I don’t quite understand the meaning of which question - Artem Konovalov
  • show with an example what should be as input and what is output - Artem Konovalov

0