2

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

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

  field1;field2;field3;field4

并且需要按字段排序。2 有没有办法做到这一点,而不必创建一个临时数组,切换field1field2,对该数组进行排序,然后再切换field1一次field2

感谢您提供的任何帮助

4

3 回答 3

3

此代码将为您完成:

Collections.sort(list, new Comparator<String>(){
    @Overide
    public int compare(String s1, String s2){
        return s1.split(";")[1].compareTo(s2.split(";")[1]);
    }
});
于 2013-09-11T23:50:37.450 回答
3

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

于 2013-09-11T23:30:07.010 回答
0

你可以这样做,创建自己的比较器并使用类似的Collections.sort东西

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);
       }
   });
于 2013-09-11T23:43:04.390 回答