Поиск по этому блогу

понедельник, 14 июля 2014 г.

Guava. Filter Collections and Iterables

Guava - это библиотека, предоставляющая возможности функционального программирования.

Guava на Google Code

Guava на Wikipedia

Зависимость в POM.XML файле проекта (Если используем Maven для проекта)
<dependency>
  <groupId>com.google.guava</groupId>
  <artifactId>guava</artifactId>
  <version>${guavaVersion}</version>
</dependency>


Фильтруем List

Для фильтрации List'a следующие классы необходимо импортировать.
import com.google.common.base.Predicate;
import com.google.common.collect.Collections2;
import com.google.common.collect.Lists;

Объявляем объект, реализующий интерфейс List.
private List<Document> displayList;

Фильтруем наш displayList. Создаем новый лист на основе исходного, но при этом в новый лист попадут только те элементы которые будут соответствовать условию, указанному в предикате. Например, тут в листе будут содержаться только не архивные документы.
displayList = Lists.newArrayList(
    Collections2.filter(displayList, new Predicate<Document>() { 
 
      @Override
      public boolean apply(Document document) {
        return !document.isArchived();
      }
    })
);
 
setupView(displayList);

Фильтруем Iterables

Для фильтрации Iterables следующие классы необходимо импортировать.
import com.google.common.base.Predicate;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;

Создаем список реализующий интерфейс List, он будет содержать объекты класса SchemaItem.
private List<SchemaItem> attributeList;

Допустим у нас есть объект класса Schema, который содержит в себе объекты SchemaItem и реализует интерфейс Iterable.
public class Schema implements Iterable<SchemaItem>

Фильтрованный лист будет создан на основе объекта реализующего интерфейс Iterable и содержащего объекты класса SchemaItem. В него попадут только те элементы, которые будут соответствовать условию в предикате.
attributeList = Lists.newArrayList(
  Iterables.filter(result, new Predicate<SchemaItem>() { 
 
    @Override
    public boolean apply(SchemaItem si) {
      return (si.getSearchable());
    }
  ));
setupView(attributeList);

Комментариев нет:

Отправить комментарий