1
private ArrayList<String> mArrayList = new ArrayList<String>();

    mArrayList.clear();

    mArrayList.add("test 3");
    mArrayList.add("test 21");
    mArrayList.add("test 4");
    mArrayList.add("test 6");
    mArrayList.add("test 1");

    Collections.sort(mArrayList);

    for (int i = 0; i < mArrayList.size(); i++) {

        Log.e("TAG", "" + mArrayList.get(i));
    }

结果是:

test 1
test 21
test 3
test 4
test 6

但我想要:

test 1
test 3
test 4
test 6
test 21

我把它分类了,但不是很完美,怎么做,我不知道,如果你有任何想法,请与我分享。

4

1 回答 1

7

虽然不是一个好的解决方案,但你会得到一个想法,试试这个:

Collections.sort(mArrayList, new Comparator<String>() {
            public int compare(String s1, String s2) {
               Integer i1 = Integer.parseInt(s1.split("test ")[1]);
               Integer i2 = Integer.parseInt(s2.split("test ")[1]);
                return i1.compareTo(i2);
            });

基本上你可以对任何对象进行排序。所以我建议有一个Data包含所有变量的类,然后你可以在任何变量的基础上对这些对象进行排序。所以例如

public class Data{
    public String test;
    public Integer i;

}

ArrayList<Data> mArrayList = new ArrayList<Data>();
.
.
.


Collections.sort(mArrayList, new Comparator<Data>() {
            public int compare(Data d1, Data d2) { 
                return d1.i.compareTo(d2.i);
            });
于 2013-08-10T07:53:24.773 回答