ฉันจะสร้างอาร์เรย์ใน Kotlin เหมือนใน Java ได้อย่างไรโดยระบุขนาด


90

ฉันจะสร้าง Array เหมือนกับที่เราทำใน java ได้อย่างไร?

int A[] = new int[N];

ฉันจะทำสิ่งนี้ใน Kotlin ได้อย่างไร?


2
ฉันรู้ว่าคุณกำลังถามถึงintแต่สำหรับ Objects มีstackoverflow.com/questions/32679060/…
Thilo

คำตอบ:


157

ตามข้อมูลอ้างอิงอาร์เรย์ถูกสร้างขึ้นด้วยวิธีต่อไปนี้:

  • สำหรับ 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, สำหรับfalseBoolean

  • อาร์เรย์ที่ไม่ใช่แบบดั้งเดิมจะแสดงโดยArray<T>คลาสซึ่งTเป็นประเภทรายการ

    Tยังคงสามารถเป็นหนึ่งในรูปแบบดั้งเดิมในชวา ( Int, Boolean... ) แต่มีค่าที่อยู่ภายในจะได้รับการบรรจุอยู่ในกล่องเท่าที่จะของ Java Integer, Doubleและอื่น ๆ

    นอกจากนี้ยังTสามารถเป็นได้ทั้งnullable และไม่ใช่ nullชอบและStringString?

    สิ่งเหล่านี้ถูกสร้างขึ้นในลักษณะที่คล้ายกัน:

    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 }
    

19
Array<Int>(size)ไม่ได้รวบรวม นั่นเป็นเพราะคุณไม่สามารถสร้างอาร์เรย์ที่ไม่เป็นโมฆะได้โดยไม่ต้องระบุองค์ประกอบ
Kirill Rakhman

2
@KirillRakhman ขอบคุณสำหรับคำพูดของคุณนั่นเป็นความผิดพลาดโดยไม่ได้ตั้งใจ แก้ไขแล้ว.
ฮอต

0

ใน 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 เป็นต้น


0

นี่คือตัวอย่างง่ายๆของการเริ่มต้น Array of String

        var names = Array<String>(<AnotherArray.size>) { i -> "" }

Kotlin doc

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.