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>高。