是否可以使用比较器对字符串进行排序,从最负面到最正面的#34;?

时间:2015-04-16 16:53:34

标签: string sorting comparator

我有一个简单的比较器如下:

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

我将如何做到这一点?所有值都是字符串。

3 个答案:

答案 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);
            }
        }
    }