Apache通用集合過濾對象
Apache Commons Collections庫的CollectionUtils
類提供各種實用方法,用於覆蓋廣泛用例的常見操作。 它有助於避免編寫樣板代碼。 這個庫在jdk 8之前是非常有用的,但現在Java 8的Stream API提供了類似的功能。
使用filter()方法過濾列表
CollectionUtils的filter()
方法可用於過濾列表以移除不滿足由謂詞傳遞提供的條件的對象。
聲明
以下是org.apache.commons.collections4.CollectionUtils.filter()
方法的聲明 -
public static <T> boolean filter(Iterable<T> collection,
Predicate<? super T> predicate)
- collection - 從中獲取輸入的集合可能不爲
null
。 - predicate - 用作過濾器的
predicate
可能爲null
。
返回值
如果通過此調用修改了集合,則返回true
,否則返回false
。
示例
以下示例顯示org.apache.commons.collections4.CollectionUtils.filter()
方法的用法。 這個示例中將過濾一個整數列表來獲得偶數。
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);
}
}
執行上面示例代碼,得到以下結果 -
Original List: [1, 2, 3, 4, 5, 6, 7, 8]
Filtered List (Even numbers): [2, 4, 6, 8]
使用filterInverse()方法過濾列表
CollectionUtils的filterInverse()
方法可用於過濾列表以移除滿足謂詞傳遞提供的條件的對象。
聲明
以下是org.apache.commons.collections4.CollectionUtils.filterInverse()
方法的聲明 -
public static <T> boolean filterInverse(Iterable<T> collection,
Predicate<? super T> predicate)
參數
-
collection
- 從中獲取輸入的集合,可能不爲null
。 -
predicate
- 用作過濾器的predicate
可能爲null
。
返回值
如果通過此調用修改了集合,則返回true
,否則返回false
。
示例
以下示例顯示org.apache.commons.collections4.CollectionUtils.filterInverse()
方法的用法。 這個示例中將過濾一個整數列表來獲得奇數。
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);
}
}
執行上面示例代碼,得到以下結果 -
Original List: [1, 2, 3, 4, 5, 6, 7, 8]
Filtered List (Odd numbers): [1, 3, 5, 7]