(почему люди до сих пор используют Vector
и избегают генериков? Я должен задать этот вопрос на SO ...;))
Позвольте мне сначала предложить современный рефакторинг:
List<List<String>> main = new ArrayList<List<String>>();
List<String> row = new ArrayList<String>();
row.add("Column1");
row.add("Column2");
row.add("Column3");
main.add(row);
Теперь мы можем посмотреть на Collections.sort(Comparator<T> comp)
, который будет выполнять сортировку main
. Нам просто нужно реализовать класс Comparator, который может сравнивать две строки в соответствии с нашим параметром, который в нашем случае является определенным столбцом:
public class MyComparator implements Comparator<List<String>> {
private int columnIndex = 0;
public MyComparator(int columnIndex) {this.columnIndex = columnIndex;}
@Override
public int compare(List<String> thisRow, List<String> otherRow) {
return thisRow.get(columnIndex).compareTo(otherRow.get(columnIndex));
}
}
Используйте компаратор так:
Collections.sort(main, new MyComparator(1)); // will sort according to "column2"
Примечание - это неполная реализация, я не проверяю, действительны ли значения индекса и все ли строки имеют одинаковый размер ... это должно быть сделано в рабочем коде.