Kotlin中的等效流
此代码与kotlin的等效代码是什么Kotlin中的等效流,kotlin,Kotlin,此代码与kotlin的等效代码是什么 stack = stack.stream() .map(e -> // some code here) .collect(Collectors.toCollection(ArrayDeque::new)); 我现在有这个 stack = stack.withIndex() .map { (i, v) -> { // some code here }} .toCollection(Array
stack = stack.stream()
.map(e -> // some code here)
.collect(Collectors.toCollection(ArrayDeque::new));
我现在有这个
stack = stack.withIndex()
.map { (i, v) -> {
// some code here
}}
.toCollection(ArrayDeque::new)
我无法解析ArrayQue::新部件。如何在科特林做到这一点
更新
这是我的原始代码,我正在使用ArrayDeque处理堆栈,我需要从0更新特定索引上的堆栈。现在我遇到了一个错误,无法将下面建议的代码分配给堆栈
var stack = ArrayDeque<Long>()
for (op in operations){
val split = op.split(' ')
when (split[0]) {
"push" -> {
stack.push(split[1].toLong())
}
"pop" -> {
stack.pop()
}
else -> {
stack = stack.withIndex()
.map { (i, v) -> {
if (i < split[1].toInt())
v + split[2].toLong()
else
v
}}
.toCollection(ArrayDeque())
}
}
if (stack.isEmpty()){
println("EMPTY")
} else {
println(stack.peekFirst()!!)
}
}
var stack=ArrayDeque()
用于(操作中的op){
val分割=操作分割(“”)
何时(拆分[0]){
“推送”->{
stack.push(拆分[1].toLong())
}
“流行音乐”->{
stack.pop()
}
其他->{
stack=stack.withIndex()
.map{(i,v)->{
如果(i
这是错误
错误:类型推断失败。预期类型不匹配:推断类型为ArrayQue,但预期为ArrayQue
您可以选择:
stack.withIndex()
.map { (i, v) -> { /* code */ }}
.toCollection(ArrayDeque())
或
如果你只有一个
map
,我会倾向于第二个,但是如果你有一个更长的链,我会选择toCollection
在之后加上括号
stack.withIndex()
.mapTo(ArrayDeque()) { (i, v) -> { /* code */ } }