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

тегизаметки, коллекции, java, списки, list




Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.



Сколько памяти расходует мое приложение Java?
Как побороть нервозность и раздражительность
IP-адреса