按字段对分号分隔值的ArrayList进行排序

时间:2013-09-11 23:25:49

标签: java sorting arraylist

我有一个以分号分隔的值的ArrayList,需要按每个ArrayList元素的第二个字段进行排序。

数组列表的每个元素都具有以下形式:

  field1;field2;field3;field4

并且需要按字段排序。有没有办法在不必创建临时数组的情况下执行此操作,切换field1field2,对该数组进行排序,然后切换{{1又和field1

感谢您提供的任何帮助

3 个答案:

答案 0 :(得分:3)

您需要编写一个Comparator<String>来提取第二个字段并进行比较。不需要中间数组。只是一点substring / indexof / regex / substringBetween

答案 1 :(得分:2)

此代码将为您完成:

Collections.sort(list, new Comparator<String>(){
    @Overide
    public int compare(String s1, String s2){
        return s1.split(";")[1].compareTo(s2.split(";")[1]);
    }
});

答案 2 :(得分:0)

您可以执行此操作,创建自己的Comparator并使用{/ 3}}类似

Collections.sort(yourArrayList, new Comparator<String>(){
       @Overide
       public int compare(String s1,  String s2){                 
            String s1Field2, s2Field2;
            // Do your extracting of field 2 for each String
            s1Field2 = s1.split(";")[1];
            s2Field2 = s2.split(";")[1];
            // You may also want to add to this to ensure that the original strings 
            // do contain a 'field2'
            return s1Field2.compareTo(s2Field2);
       }
   });