My problem is TableRowSorter is incorrectly sorting for double & integer, I've been searching and tried almost all solution listed below.
-using getColumnClass()
-using 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;
}
}
})
This is just to correct you for your implementation of compare method,
Instead of your current method,
You should just use Integer class's compare method, like this. Easy, safe and manageable.
This way it won't let you run into integer overflow cases if you try to do something like len1-len2. Imagine if len1 is already lowest negative integer and you further try to subtract something from it?