如何在Kotlin中交换MutableList中的元素?

xwbd5t1u  于 2022-12-23  发布在  Kotlin
关注(0)|答案(4)|浏览(338)

我有一个从api中提取数据的列表。但是,我需要对此列表(movieList)进行更改。我需要将索引0处的元素与索引1处的元素交换。例如:
列表[0]=电影A,
列表[1]=电影B
那么
列表[0]=电影B,
列表[1]=电影A
我打算执行这些操作的类如下:

data class MovieListDto(
    val docs: List<Movie>,
    val limit: Int,
    val offset: Int,
    val page: Int,
    val pages: Int,
    val total: Int
)

fun MovieListDto.MovieListDtoToMovieList(): List<Movie> {
    val movieList = mutableListOf<Movie>()

    for (movie in docs) {
        if (movie._id == "5cd95395de30eff6ebccde5c" ||
            movie._id == "5cd95395de30eff6ebccde5b" ||
            movie._id == "5cd95395de30eff6ebccde5d"
        ) {
            movieList.add(movie)
        }
    }
    return movieList
}

我该怎么做呢?

rnmwe5a2

rnmwe5a21#

您可以使用一个简单的扩展函数来实现这一点:

fun <T> MutableList<T>.swap(index1: Int, index2: Int){
    val tmp = this[index1]
    this[index1] = this[index2]
    this[index2] = tmp
}

它可以像这样使用:

list.swap(0, 1)
snz8szmq

snz8szmq2#

val temp = movieList[0]
movieList[0] = movieList[1]
movieList[1] = temp
dz6r00yl

dz6r00yl3#

我认为可以使用also scope函数来交换

movieList[0] = movieList[1].also { movieList[1] = movieList[0] }
qlckcl4x

qlckcl4x4#

在JDK中使用Collections.swap()方法
请参见https://developer.android.com/reference/java/util/Collections#swap(java.util.列表%3C?%3E,%20int,%20int)

相关问题