Java 如何对二维数组列表进行排序?

Java 如何对二维数组列表进行排序?,java,android,string,sorting,arraylist,Java,Android,String,Sorting,Arraylist,我有一个ArrayList,它是两个值的列表: John, 12.3 Marcus, 35.0 Sue, 11.4 如何按金额对列表进行排序? 如果在这种情况下有比使用ArrayList的ArrayList更好的方法,请告诉我,然后告诉我如何排序。谢谢。使用: 一种比较函数,它对某些 对象的集合。比较器可以传递给排序方法 例如Collections.sort或Arrays.sort以允许精确控制 在排序顺序上。比较器也可以用来控制顺序 某些数据结构,如排序集或排序映射,或 为不具有排序的对象集

我有一个ArrayList,它是两个值的列表:

John, 12.3
Marcus, 35.0
Sue, 11.4
如何按金额对列表进行排序? 如果在这种情况下有比使用ArrayList的ArrayList更好的方法,请告诉我,然后告诉我如何排序。谢谢。

使用:

一种比较函数,它对某些 对象的集合。比较器可以传递给排序方法 例如Collections.sort或Arrays.sort以允许精确控制 在排序顺序上。比较器也可以用来控制顺序 某些数据结构,如排序集或排序映射,或 为不具有排序的对象集合提供排序 自然有序


如果您可以添加更多关于为什么要使用这些值的信息,那就太好了。我确信可以建议使用更好的方法。

相反,我建议您使用类,并使用类似comparable或comparator的类进行排序。 大概是这样的:

class Person implements Comparable<Person> {
    String name;
    double amount;

    Person(String n, double d) {
        name = n;
        amount = d;
    }

    public int compareTo(Person other) {
        if (amount != other.amount)
            return Double.compare(amount, other.amount);
        return name.compareTo(other.name);
    }
}
这很容易实现和理解。

我解决了这个问题:

    Collections.sort(data, new Comparator<ArrayList<String>>() {
        @Override
        public int compare(ArrayList<String> one, ArrayList<String> two) {
            // Replacements for using Double.parseDouble(string) later
            String value1 = one.get(1).replace(",", ".");
            String value2 = two.get(1).replace(",", ".");

            if (Double.parseDouble(value1) < Double.parseDouble(value2))
            return -1;
        else if (Double.parseDouble(value1) > Double.parseDouble(distanza2))
            return 1;
        else
            return 0;
        }
    });

听起来你的内部字符串列表是[John,12.3],但我无法从你的问题中分辨出来。你可以选择Collections.sortlist,comparator,其中你的comparator决定顺序。你能用ArrayList做同样的例子吗?@smartmouse这个答案是建议创建列表而不是列表。如果您不想使用这个建议,那么您需要编写自己的比较器,但从这个答案出发的方法更可取。