为了账号安全,请及时绑定邮箱和手机立即绑定

JTable 排序器对整数和双精度排序不正确

JTable 排序器对整数和双精度排序不正确

慕田峪9158850 2021-12-01 18:56:12
我的问题是 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 已经是最小的负整数,并且您进一步尝试从中减去一些东西?


查看完整回答
反对 回复 2021-12-01
  • 1 回答
  • 0 关注
  • 144 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信