当前位置: 首页 > 知识库问答 >
问题:

静态编程语言的列表缺少“添加”、“删除”、地图缺少“放置”等?

翟奕
2023-03-14

Java我们可以做到以下几点

public class TempClass {
    List<Integer> myList = null;
    void doSomething() {
        myList = new ArrayList<>();
        myList.add(10);
        myList.remove(10);
    }
}

但是,如果我们直接将其重写为Kotlin,如下所示

class TempClass {
    var myList: List<Int>? = null
    fun doSomething() {
        myList = ArrayList<Int>()
        myList!!.add(10)
        myList!!.remove(10)
    }
}

我遇到了一个错误,没有从我的列表中找到<code>add</code>和<code>remove</code>函数

我设法将它转换成ArrayList,但是需要转换是很奇怪的,而在Java中不需要转换。这违背了拥有抽象类列表的目的

class TempClass {
    var myList: List<Int>? = null
    fun doSomething() {
        myList = ArrayList<Int>()
        (myList!! as ArrayList).add(10)
        (myList!! as ArrayList).remove(10)
    }
}

有没有一种方法可以让我使用List,但不需要施放它,就像Java可以做的那样?

共有3个答案

汪胤
2023-03-14

同意以上使用MutableList的所有答案,但您也可以从List中添加/删除并获得如下新列表。

val newListWithElement = existingList + listOf(element)
val newListMinusElement = existingList - listOf(element)

val newListWithElement = existingList.plus(element)
val newListMinusElement = existingList.minus(element)
金嘉
2023-03-14

>

  • 具有不可变(只读)列表的不可变变量:

    val users: List<User> = listOf( User("Tom", 32), User("John", 64) )
    

    < br >

    具有可变列表的不可变变量:

    val users: MutableList<User> = mutableListOf( User("Tom", 32), User("John", 64) )
    

    或无初始值-空列表,无显式变量类型:

    val users = mutableListOf<User>()
    //or
    val users = ArrayList<User>()
    
    • 您可以将项目添加到列表中:
      • users.add(anohterUser)
      • 用户=另一个用户(在引擎盖下是users.add(anohterUser)

      < br >

      >

    • 具有不可变列表的可变变量:

      var users: List<User> = listOf( User("Tom", 32), User("John", 64) )
      

      或无初始值-空列表,无显式变量类型:

      var users = emptyList<User>()
      
      • 注意:您可以将*项目添加到列表中:
        • 用户 = 另一个用户 - *它创建新的 ArrayList 并将其分配给用户

        < br >

        >

      • 具有可变列表的可变变量:

        var users: MutableList<User> = mutableListOf( User("Tom", 32), User("John", 64) )
        

        或无初始值-空列表,无显式变量类型:

        var users = emptyList<User>().toMutableList()
        //or
        var users = ArrayList<User>()
        

        >

      • 注意:您可以将项目添加到列表:
        • users.add(anohterUser)
        • 但不使用用户 = 另一个用户

          错误: Kotlin: Assignment operator ambiguity:
          public operator fun Collection.plus(element: String): list defined in kotlin.collections
          @InlineOnly public inline operator fun MutableCollection.plusAssign(element: String): Unit define in kotlin.collections

          < br >请参见:https://kotlinlang.org/docs/reference/collections.html

  • 公良鸿畅
    2023-03-14

    与许多语言不同,Kotlin区分了可变集合和不可变集合(列表、集合、映射等)。精确控制何时可以编辑集合对于消除错误和设计好的API非常有用。

    https://kotlinlang.org/docs/reference/collections.html

    您需要使用可变列表列表。

    class TempClass {
        var myList: MutableList<Int> = mutableListOf<Int>()
        fun doSomething() {
            // myList = ArrayList<Int>() // initializer is redundant
            myList.add(10)
            myList.remove(10)
        }
    }
    

    <代码>可变列表

     类似资料:
    • 我是Kotlin的初学者,正在进行循环练习 简单代码示例: 请有人告诉我为什么我们不使用关键字var/val指定计数器/迭代器变量类型“i”。因为“var /val”是静态编程语言中声明变量的标准方式。

    • 我有一个SpringMVC 4。在应用程序上下文XML文件中定义了多个静态资源的x应用程序,如下所示: 这些文件分别存储在“/webapp/static/”目录和“/resources/static/”目录中(请参见映射,分别为和。在“js”和“css”子目录中有一些文件可以访问,但我最近添加的文件在尝试通过Netbeans控制的本地Tomcat服务器访问时返回404个错误。 我尝试了对sprin

    • 问题内容: 我在Java语言环境中发现了许多缺少的国家/地区-如果我打印出可用语言环境的列表, 我缺少许多国家,包括尼日利亚,伊朗,吉尔吉斯斯坦和巴基斯坦。任何人都可以对此进行说明,或者是否有更好(更全面)的方法来获取Java国家列表? 1.6.0_16-b01 问题答案: 世界上的国家和地区之间没有一对一的映射。语言环境指定区域。它们旨在标记诸如语言多样性之类的东西。只是一个明确的例子:印度,斯

    • 问题内容: 我最近在Ubuntu 14.04上启动了带有预安装Django映像的Digital Ocean服务器。我想创建一个API,并决定使用Django Rest Framework。我完全按照http://www.django-rest-framework.org/安装了Django Rest Framework 。 这是我在服务器上访问该教程网站时的外观。 如你所见,它看起来与其余框架教程

    • 此ProductDAO类返回用户的产品列表,但Netbeans中的编译器显示“Missing return statement”。有进展吗?

    • 我的应用程序使用iPhone的GPS功能,以前工作正常,因为它提示用户允许使用定位服务,并显示在“设置”下 在运行不同操作系统(iOS 4-5)的多台设备(iPhone3GS、iPhone4、iPhone4S)中发现了这个问题。苹果最近改变了定位服务的工作方式了吗?