guava (四)--集合中的FluentIterable类


FluentIterable 是guava集合类中常用的一个类,主要用于过滤、转换集合中的数据;FluentIterable 是一个抽象类,实现了Iterable接口,大多数方法都返回FluentIterable对象,这也是guava的思想之一。


下面主要针对filter 和transform方法进行演示。


filter方法要接收Predicate接口,transform接收Function接口,一般在方法中采用new接口实现回调方法apply的方式。

import com.google.common.base.Function;
import com.google.common.base.Joiner;
import com.google.common.base.Predicate;
import com.google.common.collect.FluentIterable;
import com.google.common.collect.Lists;
import org.junit.Before;
import org.junit.Test;
import java.util.List;


public class FluentTest {
    private List<User> userList;
    @Before
    public void setUser() {
        User u1 = new User(20, "lili");
        User u2 = new User(19, "haha");
        User u3 = new User(20, "niu");
        User u4 = new User(23, "keke");


        userList = Lists.newArrayList(u1, u2, u3, u4);
    }
    @Test
    public void fluentFliter() {


        /**
         * 获取 年龄==20的用户;返回为Iterable接口
         */
        FluentIterable<User> filter = FluentIterable.from(userList).filter(new Predicate<User>() {
            @Override
            public boolean apply(User user) {
                return user.getAge() == 20;
            }
        });
        //打印结果
        for (User user : filter) {
            System.out.println(user.getAge());
        }


        /**
         * 输出
         * 20
         20
         */
    }


    @Test
    public void fluentTransform() {
        /**
         * 转换集合类型   ,把list中的user对象转换为String
         */
        FluentIterable<String> transform = FluentIterable.from(userList).transform(new Function<User, String>() {
            @Override
            public String apply(User input) {
                return Joiner.on("==").join(input.getAge(), input.getName());
            }
        });
        //打印结果
        for (String s : transform) {
            System.out.println(s);
        }
        /**
         * 输出
         20==lili
         19==haha
         20==niu
         23==keke
         */
    }


    static class User {
        int age;
        String name;
        User(int age, String name) {
            this.age = age;
            this.name = name;
        }
        int getAge() {
            return age;
        }
        void setAge(int age) {
            this.age = age;
        }
        String getName() {
            return name;
        }
        void setName(String name) {
            this.name = name;
        }
    }
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值