在java中,按每个元素的第一部分对字符串数组进行排序
我有一个字符串数组,如:在java中,按每个元素的第一部分对字符串数组进行排序,java,arrays,string,sorting,Java,Arrays,String,Sorting,我有一个字符串数组,如: 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 Compara
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;
}
}
});
但它似乎不起作用。。。
我做错了什么?只需使用比较器即可
在比较器代码中,您可以简单地拆分相应的两个字符串,并仅基于整数部分返回比较值。使用比较器,然后使用浮点比较器:
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]));
}
});
如果你想知道,你没有努力=投反对票。如果您发布一些代码,您将获得更好的响应。这与排序任何普通数组没有什么不同。首先要做的就是将字符串拆分为int和一个字符串数组(可能是一个类)。然后根据整数进行排序。很好的问题。现在你试过什么了吗?这取决于你如何构造你的字符串,如果你能把它转换成g或mg,那么它将是非常直接的。。所以,你需要告诉我什么是你能做的,什么是你不能做的。是的,有很多简单的方法。你能发布你的代码吗。我可以试着引导你通过它。你忘记了0的情况,但你最好使用@David Perez提供的答案。