【问题标题】:Kotlin. ArrayList, how to move element to first position科特林。 ArrayList,如何将元素移动到第一个位置
【发布时间】:2022-08-17 00:28:02
【问题描述】:

我有一个Lessons 的列表。这是我的Lessons 课程:

data class Lessons(
 val id: Long,
 val name: String,
 val time: Long,
 val key: String
)

我需要将元素移动到列表的开头,其key 字段的值为“priority”。 这是我的代码:

   val priorityLesson = lessons.find { it.key == \"priority\" }
        
        if (priorityLesson != null) {
            lessons.remove(priorityLesson)
            lessons.add(0, priorityLesson)
        }

一切正常,但我不喜欢这个解决方案,也许有一种更有效的方法来执行这个算法。另外,我想将列表转换为可变的,我想让它不可变。

请帮我。

  • 您的列表显然已经是可变的,因为您在上面调用 addremove

标签: algorithm kotlin arraylist collections data-class


【解决方案1】:

首先,我会称你的班级为Lesson 而不是Lessons,因为它代表一堂课。您选择的变量名称lessons 对您的课程列表很有帮助。

您可以使用可变列表并将项目移动到顶部:

val priorityLessonIndex = lessons.indexOf { it.key == "priority" }
if (priorityLessonIndex != -1)
    lessons[0] = lessons[priorityLessonIndex]
        .also { lessons[priorityLessonIndex] = lessons[0] }

或者您可以使用不可变列表:

val priorityLesson = lessons.firstOrNull { it.key == "priority" }
val newList =
    if (priorityLesson != null)
        listOf(priorityLesson) + (lessons - priorityLesson)
    else
        lessons

【讨论】:

    猜你喜欢
    • 2022-01-12
    • 2011-03-31
    • 2018-10-15
    • 1970-01-01
    • 2017-02-16
    • 2017-10-19
    • 2015-03-07
    • 1970-01-01
    • 2014-03-18
    相关资源
    最近更新 更多