鍍金池/ 教程/ Linux/ Apache通用集合過(guò)濾對(duì)象
Apache Commons Collections教程
Apache通用集合開(kāi)發(fā)環(huán)境
Apache通用集合過(guò)濾對(duì)象
Commons Collections簡(jiǎn)介
Apache通用集合聯(lián)合
Apache OrderedMap接口
Apache通用集合Bag接口
Apache通用集合安全空檢查
Apache通用集合差集
Apache通用集合包函關(guān)系
Apache通用集合BidiMap接口
Apache通用集合相交
Apache通用集合轉(zhuǎn)換對(duì)象
Apache通用集合合并與排序
Apache通用集合忽略Null
Apache通用集合MapIterator接口

Apache通用集合過(guò)濾對(duì)象

Apache Commons Collections庫(kù)的CollectionUtils類提供各種實(shí)用方法,用于覆蓋廣泛用例的常見(jiàn)操作。 它有助于避免編寫(xiě)樣板代碼。 這個(gè)庫(kù)在jdk 8之前是非常有用的,但現(xiàn)在Java 8的Stream API提供了類似的功能。

使用filter()方法過(guò)濾列表

CollectionUtils的filter()方法可用于過(guò)濾列表以移除不滿足由謂詞傳遞提供的條件的對(duì)象。

聲明

以下是org.apache.commons.collections4.CollectionUtils.filter()方法的聲明 -

public static <T> boolean filter(Iterable<T> collection,
   Predicate<? super T> predicate)
  • collection - 從中獲取輸入的集合可能不為null。
  • predicate - 用作過(guò)濾器的predicate可能為null。

返回值

如果通過(guò)此調(diào)用修改了集合,則返回true,否則返回false

示例

以下示例顯示org.apache.commons.collections4.CollectionUtils.filter()方法的用法。 這個(gè)示例中將過(guò)濾一個(gè)整數(shù)列表來(lái)獲得偶數(shù)。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.Predicate;

public class CollectionUtilsTester {
   public static void main(String[] args) {

      List<Integer> integerList = new ArrayList<Integer>();
      integerList.addAll(Arrays.asList(1,2,3,4,5,6,7,8));

      System.out.println("Original List: " + integerList);
      CollectionUtils.filter(integerList, new Predicate<Integer>() {

         @Override
         public boolean evaluate(Integer input) {
            if(input.intValue() % 2 == 0) {
               return true;
            }
            return false;
         }
      });

      System.out.println("Filtered List (Even numbers): " + integerList);
   }
}

執(zhí)行上面示例代碼,得到以下結(jié)果 -

Original List: [1, 2, 3, 4, 5, 6, 7, 8]
Filtered List (Even numbers): [2, 4, 6, 8]

使用filterInverse()方法過(guò)濾列表

CollectionUtils的filterInverse()方法可用于過(guò)濾列表以移除滿足謂詞傳遞提供的條件的對(duì)象。

聲明
以下是org.apache.commons.collections4.CollectionUtils.filterInverse()方法的聲明 -

public static <T> boolean filterInverse(Iterable<T> collection,
   Predicate<? super T> predicate)

參數(shù)

  • collection - 從中獲取輸入的集合,可能不為null。
  • predicate - 用作過(guò)濾器的predicate可能為null

返回值

如果通過(guò)此調(diào)用修改了集合,則返回true,否則返回false。

示例

以下示例顯示org.apache.commons.collections4.CollectionUtils.filterInverse()方法的用法。 這個(gè)示例中將過(guò)濾一個(gè)整數(shù)列表來(lái)獲得奇數(shù)。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.Predicate;

public class CollectionUtilsTester {
   public static void main(String[] args) {

      List<Integer> integerList = new ArrayList<Integer>();
      integerList.addAll(Arrays.asList(1,2,3,4,5,6,7,8));

      System.out.println("Original List: " + integerList);
      CollectionUtils.filterInverse(integerList, new Predicate<Integer>() {

         @Override
         public boolean evaluate(Integer input) {
            if(input.intValue() % 2 == 0) {
               return true;
            }
            return false;
         }
      });

      System.out.println("Filtered List (Odd numbers): " + integerList);
   }
}

執(zhí)行上面示例代碼,得到以下結(jié)果 -

Original List: [1, 2, 3, 4, 5, 6, 7, 8]
Filtered List (Odd numbers): [1, 3, 5, 7]