Коллекции Java: интерфейс List
Интерфейс List является основным интерфейсом для коллекций, который позволяет хранить объекты в контейнере с изменяемым размером.
Arraylist и LinkedList как реализации
ArrayList является реализацией этого интерфейса и позволяет динамически добавлять и удалять элементы из списка. Если добавить в ArrayList больше элементов, чем его начальный размер,то он будет увеличиваться динамично. С элементами в ArrayList можно непосредственно и эффективно работать, используя get() и set() методы; ArrayList реализуется на основе массива. ArrayList обычно используется как класс реализации для интерфейса List.
LinkedList реализован как двойной связанный список. Его производительность для add() и remove() лучше, чем у Arraylist. А вот get() и set() методы имеют худшую производительность, чем у ArrayList, так как LinkedList не обеспечивает прямого доступа к своим членам.
Следующий код демонстрирует использование List и ArrayList:
import java.util.ArrayList; import java.util.List; public class ListExample { public static void main(String[] args) { // типовое объявление List<Integer> list = Arrays.asList(13,77,1,8,5,76,6); // альтернативное объявление вида: // List<Integer> list = new ArrayList<>(); // и используем list.add(element); для добавления элементов for (Integer integer : list) { System.out.println(integer); } } }Сортировка списков
Вы можете сортировать списки, используя естественный порядок или через лямбда выражения. Как правило, в Java 8 вы использовать лямбда-выражение или через ссылки.
import java.util.*; public class MyClass { public static void main(String[] args) { System.out.println("Естественный порядок сортировки"); List<String> l1 = createList(); l1.sort(null); l1.forEach(System.out::println); System.out.println("Сортировка с лямбда выражением"); List<String> l2 = createList(); l2.sort((s1, s2) -> s1.compareToIgnoreCase(s2)); // сортировка без учета регистра l2.forEach(System.out::println); System.out.println("Сортировка методом ссылки"); List<String> l3 = createList(); l3.sort(String::compareToIgnoreCase); l3.forEach(System.out::println); } private static List<String> createList() { return Arrays.asList("Google.ru", "Yandex.ru", "Upread.ru", "Yahoo.com"); } }Удаление элементов списка на основе условия
Метод removeIf позволяет удалять элементы списка на основе условия:
import java.util.*; public class RemoveIfList { public static void main(String[] args) { System.out.println("Демонстрация removeIf"); List<String> l1 = createList(); // удаляем все элементы, которые содержат "я" l1.removeIf(s-> s.toLowerCase().contains("я")); l1.forEach(s->System.out.println(s)); } private static List<String> createList() { List<String> anotherList = new ArrayList<>(); anotherList.addAll(Arrays.asList("Саша", "Таня", "Юра","Коля")); return anotherList; } }
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Читайте также:
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.