我有一个字符串数组,如:
String[] strengths = new String[] {"0.5 G", "0.8 G", "1 G", "1.6 G", "2.5 G", "5 G", "10 G", "12.5 G", "20 G", "25 G", "30 G"}
如果我使用默认排序
Arrays.sort(strengths)
它会将元素排序为数字,但我想根据数字按升序对其进行排序。 我尝试使用比较器
Arrays.sort(strengths, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
try {
String[] obj1 = o1.split(" ");
String[] obj2 = o2.split(" ");
float number1= Float.parseFloat(obj1[0]);
float number2= Float.parseFloat(obj2[0]);
if ( number1< number2) {return 1;}
else {return -1;}
} catch (Exception e) {
return 0;
}
}
});
但它似乎不起作用...... 我做错了什么?
答案 0 :(得分:3)
只需使用比较器。
在比较器代码中,您可以简单地拆分相应的两个字符串,并仅根据整数部分返回比较值。
答案 1 :(得分:2)
使用比较器,然后使用Float Comparator:
Arrays.sort(strengths, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return Float.compare(Float.valueOf(o1.split(" ")[0]), Float.valueOf(o2.split(" ")[0]));
}
});