java - JavaFX 按特定字符排序
问题描述
我正在使用 TableView,其中列是字符串类型。
我知道 TableView 已经为列实现了一种排序方法。
问题是通常我会收到一个像名字这样的字符串,而且
- 以数字“5Rose”开头的字符串
- 细绳 ”-”
然后,按照自然的排序顺序,我有第一个“-”,然后是一个数字“5Rose”和一个名字“Rose”。
相反,我需要订购名字“Rose”,然后编号“5Rose”和“-”。
我试图实现一个比较器在列中设置,
Comparator naturalOrder = new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
//default comparator
if (o1 == null && o2 == null) {
return 0;
}
if (o1 == null) {
return -1;
}
if (o2 == null) {
return 1;
}
if (o1 instanceof Comparable) {
return ((Comparable) o1).compareTo(o2);
}
//compare by the characther -
if (o1 == "-") {
System.out.println("Triggered");
return -1;
}
return Collator.getInstance().compare(o1.toString(), o2.toString());
}
};
nameColumn.setComparator(Comparator.naturalOrder().thenComparing(naturalOrder));
但我失败了。
我做错了什么?
解决方案
推荐阅读
- javascript - mark.js - 使准确性参数成为一个函数
- dns - 如何找到DNS流量的源头进程?
- reactjs - Redux:缺少分号;出现奇怪的语法错误
- reactjs - 有人帮助 React Native Video Compression 吗?
- reactjs - 如何使用react-app-rewired在react app中运行cypress?
- presto - presto 查询以通过正则表达式模式检索表
- typescript - 为什么在 TypeScript 中通过 const 传递属性类型 unassignalbe?
- python - selenium 隐藏 chromdriver 控制台窗口
- python - 使用 Python 将 PDF 文件拖放到 word 文档中
- javascript - SVG 动画不填充 Safari 中的容器