Метод toArray() класса LinkedList в Java
toArray()— это практичный метод в JavaLinkedListпредоставляемый классом, используется для преобразования всех элементов связанного списка в массив. Этот метод принадлежитjava.util.LinkedListклассу и наследуется отjava.util.AbstractCollectionclass.
Синтаксис метода
LinkedListКласс предоставляет дваtoArray()перегруженные формы метода:
Базовая форма:
Обобщённая форма:
Подробности метода
Базовая форма toArray()
Пример
Этот метод возвращает массив, содержащийLinkedListвсе элементы вObjectмассив. Порядок элементов в массиве совпадает с порядком обхода элементов в связном списке.
Характеристики:
- Возвращает
Object[]массив типа - Новый массив не зависит от исходного
LinkedListсвязный список - Изменение возвращённого массива не влияет на исходный
LinkedList
связный список:
Пример
public class Main {
public static void main(String[] args) {
LinkedList<String> list = new LinkedList<>();
list.add("Apple");
list.add("Banana");
list.add("Cherry");
Object[] array = list.toArray();
for (Object item : array) {
System.out.println(item);
}
}
}
Обобщённая форма toArray(T[] a)
Пример
Пример
Этот метод позволяет указать тип возвращаемого массива, что делает его более гибким и безопасным, чем базовая форма.:
aПараметр
Возвращает массив, содержащий:
- все элементы
LinkedListсвязный список - Если указанный массив достаточно велик, возвращается этот массив
- В противном случае возвращается новый выделенный массив
Пример кода:
Пример
public class Main {
public static void main(String[] args) {
LinkedList<String> list = new LinkedList<>();
list.add("Apple");
list.add("Banana");
list.add("Cherry");
String[] array = list.toArray(new String[0]);
for (String item : array) {
System.out.println(item);
}
}
}
Сценарии использования
toArray()Метод особенно полезен в следующих ситуациях:
- Когда нужно преобразовать
LinkedListсвязный список в массив фиксированного размера - Когда некоторые API или методы принимают в качестве параметров только массивы
- Когда нужно выполнять специфичные для массивов операции над элементами коллекции
- Когда нужно повысить производительность некоторых операций (доступ к массиву обычно быстрее, чем доступ к связному списку)
Примечания
- Безопасность типовБазовая форма
toArray()toArray() возвращаетObject[]Object[], что может потребовать приведения типов - Размер массиваДля обобщённой формы, если переданный массив слишком мал, автоматически создаётся новый массив; если переданный массив слишком велик, лишние позиции устанавливаются в
null - nullВопросы производительности
- Частое преобразование может влиять на производительность, особенно в больших коллекцияхОдновременная модификация
ConcurrentModificationException
Лучшие практики
- Может быть выброшено исключение ConcurrentModificationExceptionЛучшие практики
toArray(T[] a)Используйте обобщённую форму - Предпочитайте использоватьtoArray(T[] a) для получения типобезопасных массивов
list.size()Указывайте размер массива - Вы можете использовать:
toArray(new String[0])new String
Рекомендуемый подход:
Пример
// Добавить элементы...
// Лучшая практика: использовать пустой массив в качестве параметра
String[] array = list.toArray(new String[0]);
// Или явно укажите размер
String[] sizedArray = list.toArray(new String[list.size()]);
Итог
LinkedListизtoArray()Этот метод предоставляет удобный способ преобразования связного списка в массив. Понимание различий и применимых сценариев этих двух форм (базовой формы и обобщённой формы) поможет вам писать более эффективный и безопасный код. В реальной разработке рекомендуется использовать обобщённую форму для лучшей типобезопасности.
Java LinkedList