zoukankan      html  css  js  c++  java
  • guava 学习一 函数,集合操作

    pom

    test

            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.hamcrest</groupId>
                <artifactId>hamcrest-core</artifactId>
            </dependency>
    View Code

    guava

            <dependency>
                <groupId>com.google.guava</groupId>
                <artifactId>guava</artifactId>
                <version>27.0.1-jre</version>
            </dependency>

    一、FluentIterable

    初始化数据

    // 这里初始化一些测试数据
        @Before
        public void setUp() {
            Girl girl1 = new Girl(17, "nice");
            Girl girl2 = new Girl(18, "not so nice");
            Girl girl3 = new Girl(19, "nice");
            Girl girl4 = new Girl(20, "not so nice");
            // 这里使用Lists.newArrayList添加对象,避免多次调用list.add方法,下篇会有说明
            girls = Lists.newArrayList(girl1, girl2, girl3, girl4);
        }
    
        // 测试用Girl对象
        static class Girl {
            int age;
            String face;

    过滤 from filter

    /**
             * from方法:用于包装Iterable接口,返回FluentIterable实例
             * filter方法:用于过滤集合中元素,返回过滤后的集合
             */
            FluentIterable<Girl> iterable = FluentIterable.from(girls).filter(new Predicate<Girl>(){
    
                @Override
                public boolean apply(@Nullable Girl input) {
                    // 过滤相貌nice的Girl对象
                    return "nice".equals(input.getFace());
                }
                
            });
            
            for (Girl girl : iterable) {
                System.out.println(girl.toString());
                // 输出
                //Girl [age=17, face=nice]
                //Girl [age=19, face=nice]
            }
            
            

    转换transfrom  + 拼接

    /**
             * transform方法:用于根据指定Function转换集合元素,返回转换后的集合
             */
            Iterable<String> fluentIterable = FluentIterable.from(girls).transform(new Function<Girl, String>() {
                @Override
                public String apply(Girl input) {
                    //Joiner类对相应的元素内容进行拼接处理
                    return Joiner.on(",").join(input.getAge(), input.getFace());
                }
            });
            for (String girl : fluentIterable) {
                /** 打印结果:
                 17,nice
                 18,not so nice
                 19,nice
                 20,not so nice
                 */
                System.out.println(girl);
            }

    二、List

    创建新的List

    LIst转换处理

            ArrayList<String> newArrayList = Lists.newArrayList();
            
            List<String> keys = Lists.newArrayList("a", "b", "c", "a");
            
            
            
            /**
             * transform:根据传进来的function对fromList进行相应的处理 并将处理得到的结果存入到新的list对象中返回
             */
            List<String> newList = Lists.transform(keys, new Function<String, String>() {
                @Override
                public String apply(String input) {
                    // 这里简单的对集合中的元素转换为大写
                    return input.toUpperCase();
                }
            });
            System.out.println(newList);// [I LOVE U, I LIKE U, I HATE U]
            
            
            String str = "i love u";// 测试用
            String[] strs = { "i like u", "i miss u" };// 测试用

    /**
    * asList:返回一个不可变的List 其中包含指定的第一个元素和附加的元素数组组成 修改这个数组将反映到返回的List上
    */
    List<String> list = Lists.asList(str, strs);

    分割、反转
    reverse

    三、Map

    创建、

    将set转成Map

    HashMap<Object, Object> mapa = Maps.newHashMap();
            
            /**
             * asMap:返回一个活动的map
             * 键值为给定的set中的值
             * value为通过给定Function计算后的值。
             */
            Set<String> set = Sets.newHashSet("a", "b", "c");
            //Function:简单的对元素做大写转换,下面示例多次使用
            Function<String, String> function = new Function<String, String>() {
                @Override
                public String apply(String input) {
                    return input.toUpperCase();
                }
            };
            //输出:{b=B, c=C, a=A}
            System.out.println(Maps.asMap(set, function));

    参考:https://my.oschina.net/realfighter?tab=newest&catalogId=576615

  • 相关阅读:
    【stanford】梯度、梯度下降,随机梯度下降
    [philosophy]空间
    【crawler】heritrix 3 使用
    【database】database domain knowledge
    【java】Java异常处理总结
    【computer theory】一、集合、关系和语言
    【java】ubuntu部署web项目war包到tomcat上
    【MachineLeaning】stanford lesson one
    【数据立方】由表和电子数据表到数据立方体,cuboid方体
    PHP变参函数的实现
  • 原文地址:https://www.cnblogs.com/lyon91/p/10270607.html
Copyright © 2011-2022 走看看