Guava學習筆記-簡化List數據過濾

###問題描述
過濾List中的偶數,只保留奇數
[1, 2, 3, 4]->[1, 3]
###原來app

List<Integer> list = Lists.newArrayList();
for (Integer integer : source) {
    if (integer % 2 != 0) {
        list.add(integer);
    }
}

code

for (Iterator<Integer> iterator = list.iterator(); iterator.hasNext(); ) {
    if (iterator.next() % 2 == 0) {
        iterator.remove();
    }
}

須要額外去關注怎麼保留或怎麼移除元素 ###使用Guavarem

List<Integer> list = Lists.newArrayList(Iterables.filter(source, new Predicate<Integer>() {
    public boolean apply(Integer input) {
        return input % 2 != 0;
    }
}));

input

List<Integer> list = Lists.newArrayList(Iterators.filter(source.iterator(), new Predicate<Integer>() {
    public boolean apply(Integer input) {
        return input % 2 != 0;
    }
}));

it

Collections2中也有相似的filter方法

只須要關心什麼樣的值保留、什麼樣的值移除就能夠
兩個方法很像,一個是Iterables一個是Iteratorsio

相關文章
相關標籤/搜索