Краткий ответ: в большинстве случаев лучше использовать списки вместо массивов.
Массивы в основном используются по историческим причинам, для совместимости и для реализации низкоуровневых структур данных. В Kotlin они иногда нужны для взаимодействия с Java и для обработки аргументов vararg . Но помимо этого, списки имеют много преимуществ.
Проблема в том, что на JVM массив сильно отличается от всех других объектов. Он имеет только методы, унаследованные от Object , и не переопределяет их. (И вы не можете создавать свои собственные подклассы, чтобы переопределить или добавить к ним.)
В частности, он имеет метод toString()
из Object
. Это дает код, указывающий тип - здесь [
для массива, L
указывает, что каждый элемент является ссылкой, Runningpath
указывает тип ссылки, ;
и @
разделители и шестнадцатеричное представление код массива ha sh, который может быть его адресом в памяти или каким-то другим уникальным числом.
Итак, если вам нужен другой способ отображения массива, вам придется сделать это «вручную».
Другие проблемы с массивами на JVM возникают из-за того, что у них была типизация во время выполнения - они были частью Java задолго до того, как были добавлены дженерики, и плохо взаимодействуют с дженериками (например, вы не можете создать массив тип generi c) - и одновременно изменяемый и ковариантный (и, следовательно, не безопасный по типу в некоторых случаях).
Список s, как и другие Коллекция s и структуры данных являются собственными объектами: у них есть такие методы, как toString()
, которые вы можете переопределить; они могут иметь общие параметры типа c; они безопасны по типу; они могут иметь множество реализаций, включая подклассы; и они гораздо лучше поддерживаются стандартной библиотекой, а также многими сторонними библиотеками. байт памяти) жизнь будет go проще, если вы будете использовать списки вместо массивов!