Коллекции 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 - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Программы на заказ
Отзывы
Контакты