gpt4 book ai didi

java - JTable 排序器对整数和 double 排序不正确

转载 作者:行者123 更新时间:2023-12-02 10:40:44 26 4
gpt4 key购买 nike

我的问题是 TableRowSorter 对 double 和整数的排序不正确,我一直在搜索并尝试下面列出的几乎所有解决方案。

-使用 getColumnClass()

-使用 setComparator()

@Override
public 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;
}
}
})

最佳答案

这只是为了纠正您的比较方法的实现,

而不是您当前的方法,

  @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 类的比较方法,如下所示。简单、安全且易于管理。

  @Override
public int compare(Integer o1, Integer o2) {
return Integer.compare(o1, o2);
}

这样,如果您尝试执行 len1-len2 之类的操作,就不会遇到整数溢出情况。想象一下,如果 len1 已经是最小的负整数,并且您进一步尝试从中减去一些东西?

关于java - JTable 排序器对整数和 double 排序不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52935349/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com