Java Platform, Enterprise Edition (Java EE) 8
Учебник по Java EE

Назад Вперёд Содержание

Операции над коллекциями

EL поддерживает операции с объектами коллекции: наборы (Set), списки (List) и отображения (Map). Это позволяет динамически создавать объекты коллекции, которыми затем можно управлять, используя потоки и конвейеры.

Примечание:

Как и лямбда-выражения, операции над объектами коллекции являются частью Java SE 8.

Например, вы можете построить набор следующим образом:

{1,2,3}

Вы можете построить список следующим образом. Список может содержать элементы различных типов:

[1,2,3]
[1, "two", [three,four]]

Вы можете создать отображение (Map), используя двоеточие для определения записей следующим образом:

{"one":1, "two":2, "three":3}

Вы работаете с объектами коллекции, используя вызовы методов для потока элементов, полученных из коллекции. Некоторые операции возвращают другой поток, что позволяет выполнять дополнительные операции. Таким образом, вы можете объединить эти операции в очередь.

Очередь потока состоит из следующего:

  • Источник (объект Stream)

  • Любое количество промежуточных операций, которые возвращают поток (например, filter и map)

  • Терминальная операция, которая не возвращает поток (например, toList())

Метод stream получает Stream из java.util.Collection или массива Java. Операции потока не изменяют исходный объект коллекции.

Например, вы можете создать список названий книг по истории следующим образом:

books.stream().filter(b->b.category == 'history')
              .map(b->b.title)
              .toList()

Следующий простой пример возвращает отсортированную версию исходного списка:

[1,3,5,2].stream().sorted().toList()

Потоки и операции с потоками описаны в документации по API Java SE 8, доступной по ссылке http://docs.oracle.com/javase/8/docs/api/. Следующее подмножество операций поддерживается EL:

allMatch
anyMatch
average
count
distinct
filter
findFirst
flatMap
forEach
iterator
limit
map
max
min
noneMatch
peek
reduce
sorted
substream
sum
toArray
toList

См. спецификацию EL http://www.jcp.org/en/jsr/detail?id=341 для подробностей об этих операциях.


Назад Вперёд Содержание
Логотип Oracle  Copyright © 2017, Oracle и/или её дочерних компаний. Все права защищены. Версия перевода 1.0.5 (Java EE Tutorial — русскоязычная версия)