【问题标题】:How to swap elements in MutableList in Kotlin?如何在 Kotlin 的 MutableList 中交换元素?
【发布时间】:2021-11-12 01:17:24
【问题描述】:

我有一个从 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
}

我该怎么做?

【问题讨论】:

    标签: list kotlin mutablelist


    【解决方案1】:

    您可以为此使用一个简单的扩展函数:

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

    可以这样使用:

    list.swap(0, 1)
    

    【讨论】:

      【解决方案2】:
      val temp = movieList[0]
      movieList[0] = movieList[1]
      movieList[1] = temp
      

      【讨论】:

      • 是的,它当然可以,但我实际上想问一下 Kotlin 中是否有特殊功能(我的错误)。
      【解决方案3】:

      我认为你可以使用also范围函数来交换

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

      【讨论】:

        猜你喜欢
        • 2021-10-12
        • 1970-01-01
        • 1970-01-01
        • 2020-04-11
        • 1970-01-01
        • 2016-01-21
        • 1970-01-01
        • 1970-01-01
        • 2020-11-14
        相关资源
        最近更新 更多