2015-04-27 66 views
2

嗨里面我需要梳理的Java数组二维,但我需要的排序是按索引我的数组内 我的数组是排序二维String数组-sort索引元素我阵列

String arr[][]={ {"joun","1525565","10"}, 
          {"ALI","15256562","100"}, 
          {"FATEH","1525534","20"} }; 

我需要排序索引号2 我的阵列和所述输出是

String arr[][]={ {"ALI","15256562","100"}, 
         {"FATEH","1525534","20"}, 
         {"joun","1525565","10"} }; 

我的订单必须是100然后20然后10

我试图把这个在java代码把问题的程序从i内用于循环 Arrays.sort索引1和两个 混淆(ARR [I])

+0

http://stackoverflow.com/questions/16846301/sorting-a-2d-string-array-in-java – Sybren

+0

可能的重复,如果它与Arrays.sort一起工作,它会更好,但我认为它不工作这个方法 – badr

+0

看看彼得·劳里的答案''Arrays.sort'在Java 8 – Sybren

回答

1

这里是与比较器的溶液:

public class SortTest { 
    public static void main(String[] args) { 
     String arr[][]={ {"joun","1525565","10"}, 
       {"ALI","15256562","100"}, 
       {"FATEH","1525534","20"} }; 

     Arrays.sort(arr, new Comparator<String[]>() { 
      @Override 
      public int compare(String[] o1, String[] o2) { 
       return Integer.parseInt(o2[2]) - Integer.parseInt(o1[2]); 
      } 
     }); 

     for (String[] item : arr) { 
      System.out.println(Arrays.toString(item)); 
     } 
    } 
} 
+0

谢谢我会尝试 – badr

+0

它排序每一件事情它不工作 – badr

+0

@ user44444“它排序的每一件事”< - 你是什么意思? – ioseb

5

在Java 8,你会写这篇文章的索引2

Arrays.sort(arr, Comparator.comparing(row -> -Long.parseLong(row[2]))); 

递减的数字顺序排序

对于字符串升序而不是数字。

Arrays.sort(arr, Comparator.comparing(row -> row[2])); 

这将责令10, 100, 20但如果你之前短的变长字符串。

Arrays.sort(arr, Comparator.comparing((String[] row) -> row[2].length()).reversed() 
          .thenComparing(row->row[2])); 

这将使顺序100, 10, 20

BTW:我不知道为什么第一个row需要给出的类型。

,如果你想用数字进行排序,你可以做

Arrays.sort(arr, Comparator.comparing(row -> Long.parseLong(row[2]))); 

这将使10, 20, 100递增的顺序。

在Java 8中,您可以添加一个匿名内部类来执行相同的操作。

+0

这是什么行?它是数组名吗? ,因为我得到一个错误 – badr

+1

@ user44444正在使用Java 8? 'row'是嵌套数组的名称。你会得到什么错误?这是使用Java 8的lambdas和Streams API。 –

+0

好吧我改变了我的项目为8,没有错误,但代码不与我合作我写了 Arrays.sort(arr,Comparator.comparing(row - > row [2])); for(String [] item:arr){System.out.println(Arrays.toString(item)); } ,我也得到相同的最后阵列 – badr