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

来源:互联网 发布:如何进入服务器数据库 编辑:程序博客网 时间:2024/05/14 14:45


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 0
原创粉丝点击