【问题标题】:android - reverse the order of an arrayandroid - 反转数组的顺序
【发布时间】:2011-07-21 17:09:13
【问题描述】:

我有一个对象数组。

是否可以创建一个新数组,该数组是该数组的副本,但顺序相反? 我一直在寻找这样的东西。

// my array
ArrayList<Element> mElements = new ArrayList<Element>();
// new array
ArrayList<Element> tempElements = mElements;

tempElements.reverse(); // something to reverse the order of the array

【问题讨论】:

    标签: android arrays reverse


    【解决方案1】:

    您可以分两步完成:

    ArrayList<Element> tempElements = new ArrayList<Element>(mElements);
    Collections.reverse(tempElements);
    

    【讨论】:

    • 好的,谢谢泰德。看起来我有一些 java.util.* 阅读要做。
    【解决方案2】:

    简单的方法,无需实现任何东西。

                    ArrayList<YourObject> oldlist = new ArrayList<YourObject>();
                    ArrayList<YourObject> newList = new ArrayList<YourObject>();
                    int size = oldlist.size()-1;
    
                    for(int i=size;i>=0;i--){
                        newList.add(oldlist.get(i));
                    }
    

    【讨论】:

    • 一种改进是创建newList,其初始容量至少等于oldList 的大小。这将避免在循环中添加元素时内部内存重新分配。
    【解决方案3】:

    对于 Kotlin 上的 Android,这可以通过 Anko 的 forEachReversedByIndex{} lambda 操作来完成,如下所示:

    val tempElements = ArrayList<Element>(mElements.size)
    mElements.forEachReversedByIndex{tempElements.add(it)}
    

    【讨论】:

    • 一种改进是创建tempElements,其初始容量至少等于mElements 的大小。这将避免在第二行添加元素时内部内存重新分配。
    • @TedHopp 感谢您的建议,将看到将其纳入答案:)
    【解决方案4】:

    我将个人资料从升序改为降序

    在科特林中

     // A comparator to compare points of Profile 
    class ProfileComparator {
        companion object : Comparator<Profile?> {
            override fun compare(o1: Profile?, o2: Profile?): Int {
                if (o1 == null || o2 == null) {
                    return 0;
                }
                return o2.points.compareTo(o1.points)
            }
        }
    }
    

    然后

    var profilesList = profiles.sortedWith(ProfileComparator)
    

    【讨论】:

      【解决方案5】:

      科特林

      val reverseList: List<Int> = yourActualList.reversed();
      

      Reference

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-02-27
        • 2023-04-02
        • 1970-01-01
        • 1970-01-01
        • 2023-03-05
        • 2016-01-26
        • 2011-12-18
        • 1970-01-01
        相关资源
        最近更新 更多