按升序和降序排序自定义对象价格值

时间:2013-08-14 10:36:41

标签: java core

我从自定义对象

获取字符串格式的价格值如下所示

2,000,3,000,5,000,300, - ,600, - ,507, -

我想按升序和降序排序上述价格值

有人可以帮忙吗?

我试过这个:

 Comparator<Cars> comparator = new Comparator<Cars>() {

          @Override
          public int compare(Cars object1, Cars object2) {
          // return Float.compare(Integer.parseInt(object1.getPrice()), Integer.parseInt(object2.getPrice()));


              String price1=object1.getPrice().replaceAll(",","");
               price1=price1.replaceAll("-","");

              String price2=object2.getPrice().replaceAll(",","");
           price2=price2.replaceAll("-","");

              return ((Integer)Integer.parseInt(price1)).compareTo((Integer)Integer.parseInt(price2)); 

          }

};

但如果我执行声明
    Collections.sort(carsList,comparator);

获得例外

异常:Error:java.lang.NumberFormatException: Invalid int: ""

1 个答案:

答案 0 :(得分:1)

  

错误:java.lang.NumberFormatException:无效的int:“”

因为数组中的“ - ”元素而发生。当你这样做时:

           price1=price1.replaceAll("-","");

new price1字符串包含空字符串“”

使用Integer.parseInt导致以下NumberFormatExcpetion语句失败。

由于parsetInt无法将空字符串转换为数字。

因此,一种解决方案是从数组中删除这些元素。

或者其他解决方案是为空字符串定义默认值整数。类似的东西:

           price1=price1.replaceAll("-","");
           if("".equals(price1))
               price1="0";