/** * Sort table */ protected void sort() { if (comparator == null) { comparator = Stream.concat( Stream.concat( getPrimaryComparator() != null ? Stream.of(getPrimaryComparator()) : Stream.<Comparator<Row>>empty(), getSortKeys().stream().filter(sk -> sk != null && sk.getSortOrder() != SortOrder.UNSORTED).map(this::getComparatorFromSortKey) ), Stream.of(getFallbackComparator()) ).reduce(comparator, (result, current) -> result != null ? result.thenComparing(current) : current); } viewToModel.clear(); int rowCount = model.getRowCount(); viewToModel.ensureCapacity(rowCount); for (int i = 0; i < rowCount; i++) { viewToModel.add(new Row(i)); } Collections.sort(viewToModel, comparator); updateModelToView(); }