Java排序价格值升序和降序

时间:2013-08-14 06:29:30

标签: java android java-me core

我的价格是String格式的值(“2,000”,“3,000”等)

我想对价格值进行排序

因为我使用了以下代码:

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()));

           return ((Integer)Integer.parseInt(object1.getPrice())).compareTo((Integer)Integer.parseInt( object2.getPrice())); 

          }

如果我执行以下声明

        Collections.sort(carsList, comparator);

我正在

Error:  java.lang.NumberFormatException: Invalid int: "3,000"

有人可以帮忙吗?

5 个答案:

答案 0 :(得分:3)

Integer.parseInt()不适用于包含逗号的货币(,)。在尝试使用parseInt()方法之前,您可能必须执行字符串操作以删除逗号。

做这样的事情:

String obj1Price = object1.getPrice().replaceAll(",","");
String obj2Price = object2.getPrice().replaceAll(",","");

return ((Integer)Integer.parseInt(obj1Price )).compareTo((Integer)Integer.parseInt( obj2Price))); 

答案 1 :(得分:2)

在将货币数据(字符串表示)传递给您的方法之前修改它,例如,你可以用这个:

"2,000".replaceAll(",","");

答案 2 :(得分:1)

Integer.parseInt("3,000")

抛出异常。您需要从价格的字符串表示中删除,

here

答案 3 :(得分:1)

试试这个

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

              @Override
              public int compare(String object1, String object2) {
                  int i = 0;
                int j = 0;
                try {
                    i = NumberFormat.getNumberInstance(java.util.Locale.US).parse(object1).intValue();
                      j = NumberFormat.getNumberInstance(java.util.Locale.US).parse(object2).intValue();
                } catch (ParseException e) {
                }
              // return Float.compare(Integer.parseInt(object1.getPrice()), Integer.parseInt(object2.getPrice()));
                    System.out.println("i = " + ((Integer)i) + " , j = " + ((Integer)j));

               return ((Integer)i).compareTo(((Integer)j)); 

              } 
          };
            System.out.println("xxxxxxxxx = " + comparator.compare("4,000", "3,000"));

答案 4 :(得分:0)

return ((Integer)Integer.parseInt(obj1Price.replaceAll(",","") )).compareTo((Integer)Integer.parseInt( obj2Price.replaceAll(",",""))));

会工作