ПРИХОДИТЕ УЧИТЬСЯ НОВОЙ ПРОФЕССИИ ЛЕТОМ СО СКИДКОЙ ДО 70%Забронировать скидку

Что значит ошибка List is abstract в Java: решение

Пройдите тест, узнайте какой профессии подходите и получите бесплатную карьерную консультацию
В конце подарим скидку до 55% на обучение
Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

В Java создание списка обычно происходит с использованием ArrayList или LinkedList. Вот пример инициализации ArrayList:

Java
Скопировать код
List<String> list = new ArrayList<>();

В данном примере проведена инициализация списка типа String. Использование "алмазного оператора" (diamond operator) помогает упростить код.

Пройдите тест и узнайте подходит ли вам сфера IT
Пройти тест

Интерфейс или класс?

В Java "List" является интерфейсом, поэтому нельзя создать его экземпляр. Интерфейс служит своего рода договорённостью, определяя методы, которые классы должны реализовывать.

Реализации: ArrayList или LinkedList?

Основными реализациями интерфейса List являются ArrayList и LinkedList. Ваш выбор должен быть обоснован требованиями: ArrayList эффективен при операциях чтения, тогда как LinkedList лучше подходит для операций вставки и удаления.

Пользовательская реализация: Не всегда нужна

Создание собственного класса, реализующего List, может быть интересным, но чаще всего это не требуется из-за эффективности уже существующих ArrayList и LinkedList.

LinkedList: Чемпион по вставке/удалению

Если в вашем приложении часто происходят операции вставки и удаления, особенно в середине списка, лучшим выбором будет LinkedList.

ArrayList: Эксперт по произвольному доступу

Если для вас важен быстрый доступ к элементам списка по их индексам, то ArrayList позволит извлекать элементы с постоянной скоростью.

Столкнулись с невыполнимым

Если вы пытаетесь напрямую создать экземпляр List и сталкиваетесь с ошибкой, то это напоминает вам о том, что интерфейсы в Java предназначены для объявления методов, а их реализация отдается на откуп конкретным классам.

Упомянем об Апкастинге

Присваивание объекта типа ArrayList переменной типа List является примером апкастинга, позволяющего достичь гибкости кода.

Визуализация

List — это абстракция, чертёж. ArrayList и LinkedList — это конкретные инструменты, готовые к действию.

Java
Скопировать код
List tools = new ArrayList(); // Ящик с инструментами открыт.
List tools = new LinkedList(); // Пояс для инструментов надет.

Полиморфизм в действии

Благодаря апкастингу можно легко переключаться между ArrayList и LinkedList, используя силу полиморфизма. Мы программируем с учетом интерфейсов, а не конкретных классов!

Java vs. .NET: Подходы к спискам

В мире .NET есть возможность напрямую создать список, тогда как в Java выбор между ArrayList и LinkedList должен быть обоснован.

Если стандартного недостаточно

Иногда для достижения конкретного поведения списка требуется расширить стандартный ArrayList или LinkedList.

Полезные материалы

  1. List (Java Platform SE 8)
  2. List Interface in Java with Examples – GeeksforGeeks
  3. Java List – javatpoint
  4. Java – List Interface
  5. Java List