Sobes.tech
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-ը։