这就是我比较2个Strings值的方法,这些值是数字形式,它工作得很好,直到收到等于或大于10的值。

所以我需要将这些值转换为整数。

TXCartData类具有String rowID

这就是我在做什么。

Collections.sort(data, new Comparator<TXCartData>() {
    @Override
    public int compare(TXCartData lhs, TXCartData rhs) {
        return lhs.rowId.compareToIgnoreCase(rhs.rowId);
    }
});


我试图将rowID更改为整数,但是它给了我一条错误消息,因为它期望输出为0或1,并且1==1返回truefalse

这就是我尝试过的。

Collections.sort(data, new Comparator<TXCartData>() {
    @Override
    public int compare(TXCartData lhs, TXCartData rhs) {
        return Integer.parseInt(lhs.rowId)== Integer.parseInt(rhs.rowId);
    }
});


数据列表非常大,我使用Comparator对其进行了3次排序,并获得了准确的结果。前2个是字符串,并且对它们进行了准确的排序,但在最后一个失败。

最佳答案

请尝试一下

 Collections.sort(data, new Comparator<TXCartData>() {
        @Override
        public int compare(TXCartData lhs, TXCartData rhs) {
            int n1=Integer.parseInt(lhs.rowId);
            int n2=Integer.parseInt(rhs.rowId);
            if (n1>=n2){
                return 1;
            }
            return -1;
        }
    });

08-04 16:07