java - 在 Android 中使用自然排序顺序对 ArrayList 进行排序?

标签 java android arraylist natural-sort

<分区>

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

我对它进行了排序,但并不完美,我不知道如何做到这一点,如果您有任何想法,请与我分享。

最佳答案

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

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);
            });

关于java - 在 Android 中使用自然排序顺序对 ArrayList 进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18159825/

相关文章:

java - 使用java控制microsoft powerpoint(运行幻灯片等)

java - 从 Java 到 Kotlin

java - Android中有多路通话时如何识别通话断开

java - 使用 Android 异步 Http 客户端问题将 ArrayList 传递给 PHP

java - 打印出数组列表中的所有对象

java - Hadoop 启用简单例份验证

java - Android:使用 Perst Lite 保存数据,如何保存已删除的数据?

java - 即使 ItemAnimator.canReuseUpdatedViewHolder() 返回 true,OnCreateViewHolder 仍然被调用

android - 深度链接和多个应用实例

java - List的逐次继承