Лабораторная работа
В задании требуется самостоятельно изучить отдельные элементы библиотеки коллекций. Для этого рекомендуется в среде набрать название элемента и с помощью сочетания клавиш Ctrl-B открыть исходный код этого элемента. В исходном коде в комментариях приведено описание этого элемента, из которого потом генерируется документация. Этого описания должно быть достаточно для понимания того, что и для чего делает этот элемент.
Если описания в документации не достаточно то можно попробовать разобраться с исходным кодом, который доступен для библиотечных функций и классов. Если и исходного кода оказалось недостаточно для понимания какого-либо элемента библиотеки то можно попробовать найти информацию в сети интернет. Однако её следует проверить с помощью экспериментов с кодом, поскольку в интернете встречается много устаревшей или некорректной информации.
Операции с коллекциями
mapIndexed и создайте с её помощью коллекцию studentIndexes c индексами коллекции students.zip и создайте с её помощью из коллекций students и studentIndexes коллекцию studentWithIndexes из Pair<index, student>.joinToString и создайте с её помощью из коллекции studentWithIndexes строку studentsString содержащую перечисленные через запятую пары коллекции. Элементы каждой пары должны выводиться через дефис.После вывода на печать результатов предыдущих пунктов должно получиться примерно следующее:
[0, 1, 2, 3, 4, 5, 6]
[(0, Sheldon), (1, Leonard), (2, Howard), (3, Raj), (4, Penny), (5, Amy), (6, Bernadette)]
0 - Sheldon, 1 - Leonard, 2 - Howard, 3 - Raj, 4 - Penny, 5 - Amy, 6 - Bernadette
Виды коллекций
maxBy и count класса Iterable. На их основе создайте функцию fun <T> Iterable<T>.countBy(value: Int, selector: (T) -> Int): Int, которая бы подсчитывала число элементов коллекции для которых значение selector было бы равно value.grades с использованием функции mapTo создайте множество (Set) оценок, которые получили студенты.associate класса Iterable. С помощью нее и созданной в первом пункте функции countBy создайте карту (Map), ключом в которой является оценка, а значение – количество студентов, которые получили эту оценку.associate на associateWith. Изучите функцию associateWith.После вывода на печать результатов последнего пункта должно получиться примерно следующее:
{3=1, 4=2, 5=1}
Реализация коллекций
Deque. Разберитесь, как с помощью него можно реализовать стек LIFO, в частности, выполнять операции «поместить в стек» и «взять из стека».Deque на основе LinkedList поместив туда первых трех студентов (используйте при этом функцию subList).merge класса TreeMap. Создайте с помощью этой функции карту в которой является оценка, а значение – список студентов через запятую, которые получили эту оценку. Выведите результат на печать.Результат выполнения последних пунктов должен быть примерно такой:
[Sheldon, Leonard, Howard]
kotlin.Unit
[Penny, Sheldon, Leonard, Howard]
Penny
[Sheldon, Leonard, Howard]
{3=Raj, 4=Leonard, Howard, 5=Sheldon}