We break down generics in Kotlin collections: how to “read” types like
List<String> and
Map<K, V>, why empty collections need an explicit type, why accessing
map[key] always returns a nullable (
V?), how not to kill readability with nested types, and how to assemble a minimal data structure for a console mini expense tracker using
Triple,
Pair,
MutableList, and
MutableMap. At the end: common mistakes and practical habits (read-only API, key normalization).