以编程方式创建数组

To create an array programmatically

我想以编程方式创建一个数组,如下所示使用 Kotlin。我对 Java、Kotlin 和 Android 了解不多。这可能吗?

val list1 = mutableListOf<String>()
//  val array1 = arrayOf<String>()

for (i in 0 until 6) {
    list1.add(i, "\"$i\"")
}

println(list1)

输出:["0", "1", "2", "3", "4", "5"]

我能否转换可变列表或 ArrayList,以创建字符串数组,例如 ["0", "1", "2", "3", "4", "5"]

这是为 AlertDialog 创建数组。

     val m = item_type
     var n = m - 1
     var item_max = 0

     when(TextView.text) {
        "Title 1" -> {  
            item_type_from_list = item_type_list[n]
         }
     }

     val itemTypes = generateArray(1, item_type_from_list) // Function to      
      //  create desired array

    /*val itemTypes = arrayOf<String>(
     "1",
     "2",
     "3",
     "4",
     "5"
      */

     val mBuilder = AlertDialog.Builder(requireContext())

     mBuilder.setTitle("${TextView.text}")

     mBuilder.setSingleChoiceItems(itemTypes, selectedItems1[0]) { dialog, i     
     -> 
     selectedItems1[0] = i
     var item_type_selected = selectedItems1[0]
     dialog.dismiss()
     }

     val mDialog = mBuilder.create()
     mDialog.show()

您还可以建议我可以做的任何替代方案吗?

val list1 : ArrayList<String> = arrayListOf()

然后您可以像这样添加元素:

for (i in 0 until 6) {
  list1.add(i.toString())
}

对于您的 AlertDialog,您可以使用以下内容:


mBuilder.setSingleChoiceItems(list1.toTypedArray(), selectedItems1[0]) { dialog, i -> 
         selectedItems1[0] = i
         var item_type_selected = selectedItems1[0]
         dialog.dismiss()
     }

val mDialog = mBuilder.create()
mDialog.show()

结果如下:

val list1= mutableListOf<String>()

val array:Array<String> = list1.toTypedArray()

现在,打印它们的元素的结果是相同的,但是,list1 是一个 List,而 array 是一个 Array

如果你只想生成一个数组:

val array = Array(6) { "$it" }

创建一个包含 6 个元素的数组,lambda 是初始化函数,它获取传入的当前元素的索引。所以我只是在这里将其转换为字符串。或者您可以根据需要使用函数引用,可能更清楚:

val array = Array(6, Int::toString)

要将列表转换为数组,请使用 toTypedArray 函数。您可以按照与上述相同的方式创建列表,顺便说一句:

// or MutableList
val list = List(6) { "$it" }
val array = list.toTypedArray()

或者作为更一般的情况(这里不是最好的主意,但它是您可以通过一系列转换生成任意集合的方式):

val nums = (0..5).map { "$it" }.toTypedArray()

另外,以防万一你不知道,有特殊的数组类型来表示基元数组:

val integers = Array(6) { it }
val ints = IntArray(6) { it }

首先在后台创建一个 Integer[] 数组类型,它是 Integer 对象的数组。第二个创建一个 int[] ,它是一个 int 基元数组,并且效率更高。只是一些需要注意的事情,以防它很重要!