ฉันจะสร้าง Array เหมือนกับที่เราทำใน java ได้อย่างไร?
int A[] = new int[N];
ฉันจะทำสิ่งนี้ใน Kotlin ได้อย่างไร?
ฉันจะสร้าง Array เหมือนกับที่เราทำใน java ได้อย่างไร?
int A[] = new int[N];
ฉันจะทำสิ่งนี้ใน Kotlin ได้อย่างไร?
คำตอบ:
ตามข้อมูลอ้างอิงอาร์เรย์ถูกสร้างขึ้นด้วยวิธีต่อไปนี้:
สำหรับ Java ของชนิดดั้งเดิมมีประเภทที่แตกต่างกันIntArray
, DoubleArray
ฯลฯ ซึ่งการจัดเก็บไม่มีกล่องค่า
พวกเขาสร้างขึ้นด้วยตัวสร้างที่สอดคล้องกันและฟังก์ชั่นโรงงาน:
val arrayOfZeros = IntArray(size) //equivalent in Java: new int[size]
val numbersFromOne = IntArray(size) { it + 1 }
val myInts = intArrayOf(1, 1, 2, 3, 5, 8, 13, 21)
คนแรกคือ simillar ไปว่าใน Java ก็แค่สร้างอาร์เรย์ดั้งเดิมที่เต็มไปด้วยค่าเริ่มต้นเช่นศูนย์สำหรับInt
, สำหรับfalse
Boolean
อาร์เรย์ที่ไม่ใช่แบบดั้งเดิมจะแสดงโดยArray<T>
คลาสซึ่งT
เป็นประเภทรายการ
T
ยังคงสามารถเป็นหนึ่งในรูปแบบดั้งเดิมในชวา ( Int
, Boolean
... ) แต่มีค่าที่อยู่ภายในจะได้รับการบรรจุอยู่ในกล่องเท่าที่จะของ Java Integer
, Double
และอื่น ๆ
นอกจากนี้ยังT
สามารถเป็นได้ทั้งnullable และไม่ใช่ nullชอบและString
String?
สิ่งเหล่านี้ถูกสร้างขึ้นในลักษณะที่คล้ายกัน:
val nulls = arrayOfNulls<String>(size) //equivalent in Java: new String[size]
val strings = Array(size) { "n = $it" }
val myStrings = arrayOf("foo", "bar", "baz")
val boxedInts = arrayOfNulls<Int>(size) //equivalent in Java: new Integer[size]
val boxedZeros = Array(size) { 0 }
Array<Int>(size)
ไม่ได้รวบรวม นั่นเป็นเพราะคุณไม่สามารถสร้างอาร์เรย์ที่ไม่เป็นโมฆะได้โดยไม่ต้องระบุองค์ประกอบ
ใน Kotlin การสร้าง IntArray ขนาด N นั้นทำได้ง่าย ใช้IntArray(n)
หรือประเภทที่เหมาะสมตามรายละเอียดอย่างละเอียดในคำตอบของปุ่มลัด
เมื่อใช้อาร์เรย์ขนาดคงที่ของคุณคุณสามารถใช้Kotlin Destructuring
// Create fixed sized array
val point = IntArray(2)
// Access values directly
val (x, y) = point
ในกรณีนี้x
จะถูกนำมาจากดัชนี 0 y
จากดัชนี 1 เป็นต้น
นี่คือตัวอย่างง่ายๆของการเริ่มต้น Array of String
var names = Array<String>(<AnotherArray.size>) { i -> "" }
Kotlin doc
int
แต่สำหรับ Objects มีstackoverflow.com/questions/32679060/…