任何实现的类Deque都适合您,例如LinkedList:
val linkedList = LinkedList(listOf(2, 3))
linkedList.push(1)
println(linkedList) // [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)
LinkedList(listOf(2, 3))在许多地方通过构造函数创建列表可能很烦人,所以随意编写工厂方法:
fun <T> linkedListOf(vararg elements: T): LinkedList<T> {
return LinkedList<T>(elements.toList())
}
// Usage:
val list = linkedListOf(2, 3)
list.push(1)
println(list) // [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)
我认为最简单的是写:
var list = listOf(2,3)
println(list) // [2, 3]
list = listOf(1) + list
println(list) // [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)
没有具体的tail实现,但你可以调用.drop(1)来获得相同的.您可以head\tail通过编写以下扩展属性来使其更通用:
val <T> List<T>.tail: List<T>
get() = drop(1)
val <T> List<T>.head: T
get() = first()
Run Code Online (Sandbox Code Playgroud)
然后:
val list = listOf(1, 2, 3)
val head = list.head
val tail = list.tail
Run Code Online (Sandbox Code Playgroud)
更多信息:Kotlin List尾部功能
简单,只需将元素包裹在 a 中List,然后使用+运算符(或List.plus())将两者连接起来Lists:
val list1 = listOf(2, 3) // [2, 3]
val list2 = listOf(1) + list1 // [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)
对于你的第二个问题,在 Kotlin 1.2 中有:
List.first()
List.last()
Run Code Online (Sandbox Code Playgroud)
两者都是 O(1)
这可以通过扩展功能轻松完成,如下所示
fun <T> MutableList<T>.prepend(element: T) {
add(0, element)
}
Run Code Online (Sandbox Code Playgroud)
fun <T> MutableList<T>.prependAll(elements: List<T>) {
addAll(0, elements)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7726 次 |
| 最近记录: |