В Java целую вечность, когда вы хотели преобразовать коллекцию в массив, вы делали это: coll.toArray(new ItemObject[coll.size()])
.Однако в Android Studio я получил предупреждение.Вот полный текст объяснения предупреждения, предоставленного Android Studio:
Существует два стиля для преобразования коллекции в массив: либо с использованием предварительно заданного размера (например, c.toArray(new String[c.size()])
), либо с помощьюпустой массив (например, c.toArray(new String[0]
).В более старых версиях Java было рекомендовано использование массива с предварительно заданным размером, поскольку вызов отражения, который необходим для создания массива правильного размера, был довольно медленным.Однако после поздних обновлений OpenJDK 6 этот вызов был встроен, что сделало производительность версии с пустым массивом такой же, а иногда даже лучше, по сравнению с версией предварительного размера.Также передача массива предварительно заданного размера опасна для одновременной или синхронизированной коллекции, поскольку возможна гонка данных между вызовом size и toArray, что может привести к появлению дополнительных нулей в конце массива, если коллекция одновременно сокращалась во время операции.Эта проверка позволяет следовать единому стилю: либо с использованием пустого массива (что рекомендуется в современной Java), либо с использованием массива предварительно заданного размера (который может быть быстрее в старых версиях Java или JVM не на основе HotSpot).
Но это объяснение касается только HotSpot, Java VM, поэтому я задаюсь вопросом: действительно ли это предупреждение также для Android?Эти улучшения, упомянутые выше, также реализованы?Какой самый быстрый способ конвертировать коллекцию в массив на Android?
РЕДАКТИРОВАТЬ: я знаю, что это не имеет большого значения в настоящее время, но я хотел бы знать.=)