我有一个简单的比较器如下:
public class RateComparator implements Comparator<String[]>
{
public int compare(String[] array, String[] anotherArray)
{
return array[0].compareTo( anotherArray[0] );
}
};
但是这只对值进行排序:
-.35
-.65
.10
.20
.25
.30
.65
1.0
我期望的行为是什么:
-.65
-.35
.10
.20
.25
.30
.65
1.0
我将如何做到这一点?所有值都是字符串。
答案 0 :(得分:0)
你可以强制转换浮点数并比较浮点数。
答案 1 :(得分:0)
您可以在比较器中执行以下操作:
public class RateComparator implements Comparator<String[]>
{
public int compare(String[] array, String[] anotherArray)
{
double arrayDouble = Double.parseDouble(array[0]);
double anotherArrayDouble = Double.parseDouble(anotherArray[0]);
return arrayDouble < anotherArrayDouble;
}
};
答案 2 :(得分:0)
我建议您使用简单的 Arrays.sort 来缩短,而不是编写比较器。在这种情况下,您需要使用double数组而不是字符串数组。在下面找到示例代码
import java.util.Arrays;
public class Testing {
public static void main(String[] args) {
double[] fruits = new double[] {-.35,-.65,.10,.20,.25,.30,.65,1.0};
Arrays.sort(fruits);
for(double arrayElement:fruits){
System.out.println(arrayElement);
}
}
}