【问题标题】:Sort arraylist in android date and others string在android日期和其他字符串中排序arraylist
【发布时间】:2013-08-15 13:36:03
【问题描述】:

我有一个带有以下字符串的数组列表。

周二、周四、周一、周六。

而且我希望看起来像这样排序:

周一、周二、周四、周六。

有可能出现在星期日、星期三..

我有一个带有以下字符串的数组列表。

狗、兔子、牛、鸭、猫。

而且我希望看起来像这样排序:

兔子、猫、牛、鸭、狗。

有可能吗?谢谢。

【问题讨论】:

    标签: android sorting arraylist


    【解决方案1】:

    是的,您应该为每个人创建一个ComparatorDocs

    public final class MyComparator implements Comparator<String>
    {
        @Override
        public int compare(String a, String b)
        {
            //Return +1 if a>b, -1 if a<b, 0 if equal
        }
    }
    

    对于您一周中的日子,您可能希望让您的比较器与此类似;

    public final class MyComparator implements Comparator<String>
    {
        private String[] items ={
            "monday",
            "tuesday",
            "wednesday",
            "thursday",
            "friday",
            "saturday",
            "sunday"
        };
        @Override
        public int compare(String a, String b)
        {
            int ai = items.length, bi=items.length;
            for(int i = 0; i<items.length; i++)
            {
                if(items[i].equalsIgnoreCase(a))
                    ai=i;
                if(items[i].equalsIgnoreCase(b))
                    bi=i;
            }
            return ai-bi;
        }
    }
    

    然后根据您的自定义顺序对您的数组列表进行排序;

    MyComparator myComparator = new MyComparator();
    Collections.sort(myArrayList, myComparator);
    

    如果您需要该类型的默认排序(如果它实现了可比较),则可以在没有第二个参数的情况下调用 Collections.sort()Docs

    【讨论】:

    • 您在compare 方法中定义a 是否小于b 的比较。我提供了一个可能的实现示例。
    • 已更新,现在答案对@JuanA.Doval 应该更有意义
    • 是的,我删除了额外的注释部分,在不编译/运行的情况下编写代码时容易出错。谢谢
    • @JuanA.Doval 你的标题说安卓日期排序?如果您从日期对象格式化字符串,您最好使用默认比较器对日期列表进行排序。然后从排序列表中生成字符串。
    • @JuanA.Doval 很可能是重音导致相等性搞砸了,如果结果为真,则必须找到不同的相等性检查。我不明白你的话 valorate。
    猜你喜欢
    • 1970-01-01
    • 2011-08-14
    • 1970-01-01
    • 2020-12-14
    • 2019-11-07
    • 1970-01-01
    • 1970-01-01
    • 2012-11-09
    • 1970-01-01
    相关资源
    最近更新 更多