Custom getters and setters in Kotlin - Time & Space Complexity
When using custom getters and setters in Kotlin, it's important to know how often these methods run as your program works.
We want to find out how the time to run changes when we access or change properties with custom code.
Analyze the time complexity of the following code snippet.
class Rectangle(var width: Int, var height: Int) {
var area: Int = 0
get() = width * height
set(value) {
field = value
width = value / height
}
}
fun main() {
val rect = Rectangle(10, 5)
println(rect.area)
rect.area = 50
println(rect.width)
}
This code defines a rectangle with custom getter and setter for the area property.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: The getter multiplies width and height each time area is accessed.
- How many times: Once per access; no loops or recursion involved.
Each time you get or set the area, the operations run once, no matter the size of width or height.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 1 multiplication or division |
| 100 | 1 multiplication or division |
| 1000 | 1 multiplication or division |
Pattern observation: The number of operations stays the same regardless of input size.
Time Complexity: O(1)
This means accessing or setting the property takes the same short time no matter the values involved.
[X] Wrong: "Custom getters and setters slow down the program a lot as values get bigger."
[OK] Correct: The operations inside getters and setters run once per access, so their time does not grow with the size of the values.
Understanding how custom getters and setters work helps you explain property access performance clearly and confidently in real projects.
"What if the getter computed the area by looping over a list of rectangles? How would the time complexity change?"