Java 如何对二维数组列表进行排序?
我有一个ArrayList,它是两个值的列表: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以允许精确控制 在排序顺序上。比较器也可以用来控制顺序 某些数据结构,如排序集或排序映射,或 为不具有排序的对象集
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这个答案是建议创建列表而不是列表。如果您不想使用这个建议,那么您需要编写自己的比较器,但从这个答案出发的方法更可取。