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

此代码与kotlin的等效代码是什么

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  */ } }