kotlin码上开学练习题

Kotlin 里那些「不是那么写的」

1.创建一个 Kotlin 类,这个类需要禁止外部通过构造器创建实例,并提供至少一种实例化方式。

package com.example.demo1.testkotlin

import android.view.View
import java.time.LocalDateTime
import java.util.*

class Sample private constructor() {
    companion object {
        fun getInstance(): Sample {
            return Sample()
        }
    }

}

2.分别用 Array、IntArray、List 实现 「保存 1-100_000 的数字,并求出这些数字的平均值」,打印出这三种数据结构的执行时间

package com.example.demo1.testkotlin

import android.view.View
import java.util.*

class Sample private constructor() {

    public fun compare() {
        println("ArrayCal return " + getTimeLin { ArrayCal() } + " ms,")
        println("IntArrayCal return " + getTimeLin { IntArrayCal() } + " ms,")
        println("ListCal return " + getTimeLin { ListCal() } + " ms,")
    }

    private fun getTimeLin(cal: () -> Unit): Long {
        val startTime = System.nanoTime()
        print(cal().toString() + "")
        return System.nanoTime() - startTime;
    }


    private fun ArrayCal(): Int {
        var result = 0
        var array: Array<Int> = Array(100000) { it -> it + 1 }
        for (item in array) {
            result += item
        }
        return result / 100000
    }

    private fun IntArrayCal(): Int {
        var result = 0
        var arrays: IntArray = IntArray(100000) { it -> it + 1 }
        for (item in arrays) {
            result += item
        }
        return result / 100000
    }

    private fun ListCal(): Int {
        var result = 0
        var list = mutableListOf(0)
        for (i in 1..100000) {
            list.add(i - 1)
        }
        return result / 100000
    }
}

返回结果:

Array<Int>     return  75657200 ms,
IntArray return  13486500 ms  // ①
List<Int> return      44496400 ms,

知识点:

① Kotlin 中要用专门的基本类型数组类 (IntArray FloatArray LongArray) 才可以免于装箱,因此IntArray 在这里运行效率比Array<Int>高。

猜你喜欢

转载自blog.csdn.net/qq_33298609/article/details/120394186
今日推荐