Android-приложение с веб-обзором в разделе «Основная активность и фрагмент» [активность 2: HeaderActivity]

Давайте посмотрим, как фильтровать встроенный список JDK и MutableList с использованием коллекций Eclipse (ранее коллекции GS ).

List jdkList = Arrays.asList(1, 2, 3, 4, 5);
MutableList ecList = Lists.mutable.with(1, 2, 3, 4, 5);

Если вы хотите отфильтровать номера меньше 3, вы ожидаете следующие выходы.

List selected = Lists.mutable.with(1, 2);
List rejected = Lists.mutable.with(3, 4, 5);

Вот как вы можете фильтровать, используя анонимный внутренний класс, как Predicate.

Predicate lessThan3 = new Predicate()
{
    public boolean accept(Integer each)
    {
        return each < 3;
    }
};

Assert.assertEquals(selected, Iterate.select(jdkList, lessThan3));

Assert.assertEquals(selected, ecList.select(lessThan3));

Ниже приведены некоторые альтернативы фильтрации списков JDK и Eclipse Collections MutableLists с использованием фабрики Predicates .

Assert.assertEquals(selected, Iterate.select(jdkList, Predicates.lessThan(3)));

Assert.assertEquals(selected, ecList.select(Predicates.lessThan(3)));

Вот версия, которая не выделяет объект для предиката, используя фабрику Predicates2 вместо этого с помощью метода selectWith, который принимает значение Predicate2.

Assert.assertEquals(
    selected, ecList.selectWith(Predicates2.lessThan(), 3));

Иногда вы хотите фильтровать отрицательное состояние. В Eclipse Collections имеется специальный метод, который называется reject.

Assert.assertEquals(rejected, Iterate.reject(jdkList, lessThan3));

Assert.assertEquals(rejected, ecList.reject(lessThan3));

Вот как вы можете фильтровать с использованием лямбда Java 8 в качестве Predicate.

Assert.assertEquals(selected, Iterate.select(jdkList, each -> each < 3));
Assert.assertEquals(rejected, Iterate.reject(jdkList, each -> each < 3));

Assert.assertEquals(selected, gscList.select(each -> each < 3));
Assert.assertEquals(rejected, gscList.reject(each -> each < 3));

Метод partition вернет две коллекции, содержащие элементы, выбранные и отклоненные Predicate.

PartitionIterable jdkPartitioned = Iterate.partition(jdkList, lessThan3);
Assert.assertEquals(selected, jdkPartitioned.getSelected());
Assert.assertEquals(rejected, jdkPartitioned.getRejected());

PartitionList ecPartitioned = gscList.partition(lessThan3);
Assert.assertEquals(selected, ecPartitioned.getSelected());
Assert.assertEquals(rejected, ecPartitioned.getRejected());

Примечание: Я являюсь коммиттером для коллекций Eclipse.

0
задан Sachin Sharma 26 February 2015 в 09:52
поделиться