Java 如何@Override Comparator使CellTable中的列基于整数而不是基于字符串(GWT)排序?
好的,我有一张桌子,上面有一张单子 No 1 2 5 10 20 然后它将不会像整数那样排序,而是像字符串一样排序。例:它的排序如下:Java 如何@Override Comparator使CellTable中的列基于整数而不是基于字符串(GWT)排序?,java,gwt,Java,Gwt,好的,我有一张桌子,上面有一张单子 No 1 2 5 10 20 然后它将不会像整数那样排序,而是像字符串一样排序。例:它的排序如下: columnSortHandler.setComparator(noColumn, new Comparator<String[]>() { @Override public int compare(String[] o1, String[] o2) { if (o1==o2) {
columnSortHandler.setComparator(noColumn, new Comparator<String[]>() {
@Override
public int compare(String[] o1, String[] o2) {
if (o1==o2) {
return 0;
}
if (o1 != null) {
return (o2 != null) ? o1[0].compareTo(o2[0]) : 1;
}
return -1;
}
});
No
1
10
2
20
5
不
1.
10
2.
20
5.
那就不对了
如此尝试:
columnSortHandler.setComparator(noColumn, new Comparator<String[]>() {
@Override
public int compare(String[] o1, String[] o2) {
if (o1==o2) {
return 0;
}
if (o1 != null) {
return (o2 != null) ? Integer.parseInt(o1[0]).compareTo(Integer.parseInt(o2[0]) : 1;
}
return -1;
}
});
columnSortHandler.setComparator(noColumn,new Comparator(){
@凌驾
公共整数比较(字符串[]o1,字符串[]o2){
如果(o1==o2){
返回0;
}
如果(o1!=null){
返回(o2!=null)?Integer.parseInt(o1[0])。比较(Integer.parseInt(o2[0]):1;
}
返回-1;
}
});
但compareTo不适用于整数
所以我的问题是
如何@Override Comparator使单元格表中的列基于整数而不是基于字符串(GWT)排序?使用Integer.valueOf()
,如下所示
return (o2 != null) ? Integer.valueOf(o1[0]).compareTo(Integer.valueOf(o2[0])) : 1;
而不是
return (o2 != null) ? Integer.parseInt(o1[0]).compareTo(Integer.parseInt(o2[0]) : 1;
parseInt()返回原语int而不是包装整数类
无法对基元类型int调用compareTo(int)
有很多方法可以将String
转换为Integer
包装类
试试以下任何一种:
- 整数.valueOf(字符串)
- 新整数(字符串)
- getInteger(字符串)