Junior
Ի՞նչ տեսակի հավաքածուներ է աջակցում Kotlin-ը։
sobes.tech AI
Պատասխան AI-ից
Կոտլինը աջակցում է Java Collection Framework-ի ստանդարտ տիպերի հավաքածուներին, ինչպես նաև տրամադրում է իր հարմարավետ ընդարձակումներն ու ինտերֆեյսները:
Կոտլինի հիմնական հավաքածուների ինտերֆեյսները՝
Collection<out E>՝ անփոփոխ հավաքածուի հիմնական ինտերֆեյսը:MutableCollection<E>՝ փոփոխական հավաքածուի ինտերֆեյսը:List<out E>՝ անփոփոխ հավաքածու, որը ունի դասավորված մուտք ըստ ինդեքսի:MutableList<E>՝ փոփոխական հավաքածու, որը ունի դասավորված մուտք ըստ ինդեքսի:Set<out E>՝ անփոփոխ հավաքածու՝ եզակի տարրերով առանց որոշված կարգի:MutableSet<E>՝ փոփոխական հավաքածու՝ եզակի տարրերով առանց որոշված կարգի:Map<K, out V>՝ անփոփոխ զույգերի հավաքածու՝ " բանալի-արժեք":MutableMap<K, V>՝ փոփոխական զույգերի հավաքածու՝ " բանալի-արժեք":
Կոտլինի ստանդարտ գրադարանում հիմնական հավաքածուների իրականացման օրինակներ՝
ArrayList՝ փոփոխական ցանկ, որը հիմնված է զանգվածի վրա:LinkedList՝ փոփոխական ցանկ, որը հիմնված է կապակցված ցանկի վրա:HashSet՝ փոփոխական բազմություն, որը հիմնված է հեշ-թաբլետի վրա:LinkedHashSet՝ փոփոխական բազմություն, որը հիմնված է հեշ-թաբլետի և կապակցված ցանկի վրա (պահպանում է ավելացման կարգը):HashMap՝ փոփոխական քարտեզ, որը հիմնված է հեշ-թաբլետի վրա:LinkedHashMap՝ փոփոխական քարտեզ, որը հիմնված է հեշ-թաբլետի և կապակցված ցանկի վրա (պահպանում է ավելացման կարգը):
Նմուշներ հավաքածուներ ստեղծելու համար՝
// Անփոփոխ ցանկ
val immutableList = listOf("a", "b", "c")
// Փոփոխական ցանկ
val mutableList = mutableListOf(1, 2, 3)
// Անփոփոխ բազմություն
val immutableSet = setOf("apple", "banana")
// Փոփոխական բազմություն
val mutableSet = mutableSetOf(10, 20, 30)
// Անփոփոխ քարտեզ
val immutableMap = mapOf("key1" to "value1", "key2" to "value2")
// Փոփոխական քարտեզ
val mutableMap = mutableMapOf("a" to 1, "b" to 2)
Հիմնական տարբերությունը փոփոխական (Mutable*) և անփոփոխ (*) տարբերակների միջև այն է, որ փոփոխական հավաքածուները տրամադրում են մեթոդներ տարրերի ավելացման, հեռացման և փոփոխման համար, մինչդեռ անփոփոխ հավաքածուները դա չեն անում: Կառուցման ֆունկցիաները՝ listOf, setOf, mapOf ստեղծում են անփոփոխ հավաքածուներ, իսկ mutableListOf, mutableSetOf, mutableMapOf — փոփոխական:
Առավելություններ՝
- Անփոփոխ հավաքածուները ապահովում են անվտանգություն՝ կանխելով անսպասելի փոփոխությունները:
- Կան բազմաթիվ օգտակար ընդարձակումներ՝
filter,map,forEachև այլն: - Լավ ինտերոպերաբելիություն՝ հեշտ է աշխատել Java կոդի հետ, որը օգտագործում է Java Collection Framework-ը։