如何在java中对数组进行排序?

如何在java中对数组进行排序?,java,android,arrays,Java,Android,Arrays,你好,我有一些像这样的简单代码 String[] myString1= {"Hidayat", "20"}; outerArr.add(myString1); String[] myString2= {"Ryan", "10"}; outerArr.add(myString2); String[] myString2= {"irwan", "5"}; outerArr.add(myString2); 有人知道如何按数字升序对数组外部进行排序吗?您可以使用界面进行自定

你好,我有一些像这样的简单代码

  String[] myString1= {"Hidayat", "20"};
  outerArr.add(myString1);

  String[] myString2= {"Ryan", "10"};
  outerArr.add(myString2);

  String[] myString2= {"irwan", "5"};
  outerArr.add(myString2);
有人知道如何按数字升序对数组外部进行排序吗?

您可以使用界面进行自定义排序:

Collections.sort(outerArr, new Comparator<String[]>() {
    public int compare(String[] o1, String[] o2)
    {
        // for example you can compare integers
        return Integer.parseInt(o2[1]) - Integer.parseInt(o1[1]);
    }
});
Collections.sort(outerar,newcomparator(){
公共整数比较(字符串[]o1,字符串[]o2)
{
//例如,您可以比较整数
返回Integer.parseInt(o2[1])-Integer.parseInt(o1[1]);
}
});
对于这种情况,我更喜欢TreeMap类。TreeMap类通过使用树来实现映射接口。树映射提供了一种按排序顺序存储键/值对的有效方法,并允许快速检索

TreeMap<String, String> map = new TreeMap<>();
map.put("20", "Hidayat");
map.put("10", "Ryan");
map.put("5", "irwan");

如果使用Java 8,另一种方法是使用Lambda,首先创建一个类,该类包含字符串的2个成员字段和每个成员的带有getter的数字,然后以这种方式调用:

outerArr.sort((Person o1, Person o2)->o1.getAge()-o2.getAge());
如果不想创建新类,可以调用:

outerArr.sort((String[] o1, String[] o2)->Integer.parseInt(o1[1])-Integer.parseInt(o2[1]));

您使用什么类型的列表作为outerar?您应该补充一点,每次插入都会有一些成本,当然,这取决于使用情况。对于一个非常静态的映射,这不是一个问题,对于一个需要经常更新但只需要偶尔排序(打印或使用)的列表,我以前会使用listthx,但是如果一个数组是动态的,你的数组在排序时会发生什么变化呢?这在这篇文章中不是主题,但这取决于你的“动态数组”。
outerArr.sort((String[] o1, String[] o2)->Integer.parseInt(o1[1])-Integer.parseInt(o2[1]));