2

各ArrayList要素の2番目のフィールドでソートする必要があるセミコロンで区切られた値のArrayListがあります。

配列リストの各要素の形式は次のとおりです。

  field1;field2;field3;field4

field.2 でソートする必要があります。2 一時的な配列を作成し、スイッチfield1とを切り替えfield2、その配列をソートしてからスイッチfield1field2もう一度切り替える必要なく、これを行う方法はありますか?

あなたが提供できるかもしれない助けをありがとう

4

3 に答える 3

3

Comparator<String>2 番目のフィールドを抽出して比較するa を記述する必要があります。中間配列は必要ありません。substring/indexof/regex/ substringBetweenのほんの少し。

于 2013-09-11T23:30:07.010 に答える
0

これを行うと、独自のComparatorCollections.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 に答える