我有一堆有一堆列的表,有些是可见的,但最隐形的。不可见的列都按字母顺序排序,使用忽略可见列的比较器,一切正常(是的!)。
但我希望按特定顺序显示可见列。 说我有可见的栏目'痛苦''获得''扭伤'' rain'而且'跛脚'默认情况下没有按照任何定义的方式进行排序或排序,我希望它们按照特定的顺序“获得'”' rain'' sprain',' ;跛'和痛苦'
我该如何实现?
答案 0 :(得分:1)
您可以将订单放入地图中:
Map<String, Integer> columnOrder = new HashMap<>();
String[] order = new String[] {"gain", "rain", "sprain", "lame", "pain"};
for (int i = 0 ; i < order.length ; i++) {
columnOrder.put(order[i], i);
}
然后只需使用Comparator
API为排序提供比较器。在我看来,不可见列的顺序并不重要,因为你看不到它们,但是你可以做类似的事情
Comparator<TableColumn<?, ?>> columnComparator =
Comparator.comparing(TableColumn<?,?>::isVisible).
.thenComparing(col -> columnOrder.getOrDefault(col.getText().toLowerCase(), Integer.MAX_VALUE));
默认为MAX_VALUE
只是确保任何不在地图中的文字都在最后。