Android - 反转数组的顺序

62

我有一个对象数组。

是否可能创建一个新的数组,该数组是原数组的副本,但按相反的顺序排列? 我正在寻找这样的东西。

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

tempElements.reverse(); // something to reverse the order of the array
5个回答

232

你可以分两步来完成:

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

哎呀,谢谢Ted。看来我得读一些java.util.*的内容了。 - Matthew

3

Kotlin

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

Reference


0
简单的方法,不需要实现任何东西。
                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 的大小。这样可以避免在循环中添加元素时进行内部内存重新分配。 - Ted Hopp

0
在 Kotlin 上的 Android 中,可以使用 Anko 的 forEachReversedByIndex{} lambda 操作来实现,如下所示:
val tempElements = ArrayList<Element>(mElements.size)
mElements.forEachReversedByIndex{tempElements.add(it)}

1
一个改进的方法是创建一个初始容量至少等于mElements大小的tempElements。这将避免在第二行添加元素时进行内部内存重新分配。 - Ted Hopp
@TedHopp 感谢您的建议,我会考虑将其纳入答案中 :) - DarkCygnus

0

我通过以下方式将个人资料从升序改为降序:

在 Kotlin 中

 // 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)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接