我的表格列(" ID"),其中celldata有一些字符串和整数表示如下。
ID
ABC1
fgd5
hgt9
ftg7
我应该在排序后得到以下结果:
ID
ABC1
fgd5
ftg7
hgt9
那么如何才能根据列数据中的整数值对此列进行排序。
答案 0 :(得分:2)
假设
TableColumn<SomeEntity, String> idColumn ;
你可以做到
// any number of non-digits (consumed greedily),
// followed by any number of digits (consumed greedily, as a group named "value"),
// followed by anything
Pattern pattern = Pattern.compile("\\D*(?<value>\\d*).*");
idColumn.setComparator(Comparator.comparingInt(id -> {
Matcher matcher = pattern.matcher(id);
// value to return if no match:
int defaultValue = 0 ;
if (matcher.matches()) {
// get the portion of the match that matched the group named "value":
String value = matcher.group("value");
if (value.isEmpty()) {
return defaultValue ;
} else {
// convert to an int:
return Integer.parseInt(value);
}
} else {
return defaultValue ;
}
}));