我的问题是 TableRowSorter 对双精度和整数排序不正确,我一直在搜索并尝试了下面列出的几乎所有解决方案。- 使用 getColumnClass()- 使用 setComparator()@Overridepublic Class<?> getColumnClass(int column){if (column == 4) return Integer.class;else return String.class; }};sorter.setComparator(4, new Comparator<Integer>() {@Override public int compare(Integer o1, Integer o2) { int len1 = o1.toString().length(); int len2 = o2.toString().length(); if (len1==len2) { return o1.compareTo(o2); } else { return len1-len2; } }})
1 回答
慕妹3146593
TA贡献1820条经验 获得超9个赞
这只是为了纠正您对比较方法的实现,
而不是你目前的方法,
@Override
public int compare(Integer o1, Integer o2) {
int len1 = o1.toString().length();
int len2 = o2.toString().length();
if (len1==len2) {
return o1.compareTo(o2);
} else {
return len1-len2;
}
}
您应该像这样使用 Integer 类的 compare 方法。简单、安全且易于管理。
@Override
public int compare(Integer o1, Integer o2) {
return Integer.compare(o1, o2);
}
这样,如果您尝试执行 len1-len2 之类的操作,它就不会让您遇到整数溢出情况。想象一下,如果 len1 已经是最小的负整数,并且您进一步尝试从中减去一些东西?
添加回答
举报
0/150
提交
取消