guava之只读、函数式编程(过滤、转换)

package com.lfj.myguava;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import com.google.common.collect.ImmutableList;

/**
 * 只读设置
 * @author Administrator
 *
 */
public class Demo1 {
    public static void main(String[] args) {
        List<String> list=new ArrayList<String>();
        list.add("a");
        list.add("b");
        list.add("c");
        //对原有list进行包装,相等于原有List的一个视图、快照
        List<String> readList=Collections.unmodifiableList(list);
        //readList.add("d");    //java.lang.UnsupportedOperationException异常
        list.add("e");  //改变原有List  视图也一起改变

        //对比查看 初始化List,且不可再改变
        List<String> list1=ImmutableList.of("a","b","c");
        //list1.add("e");  添加失败
    }
}
    package com.lfj.myguava;

import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.List;
import java.util.Set;

import com.google.common.base.Function;
import com.google.common.base.Functions;
import com.google.common.base.Predicate;
import com.google.common.collect.Collections2;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;

/**
 * 函数式编程
 * 1.Predicate  断言
 * 2.Function
 * 
 * 工具:Collections2.filter 过滤器
 * Collections2.transform  转换
 * @author Administrator
 *
 */
public class Demo2 {
    public static void main(String[] args) {
        //创建List 静态初始化
        List<String> list=Lists.newArrayList("son","dad","moom","refer");
        //找出回文 palindrome
        Collection<String> palindromeList =Collections2.filter(list,new Predicate<String>(){


            public boolean apply(String input) {
                //业务逻辑
                return new StringBuilder(input).reverse().toString().equals(input);
            }

        });
        for(String temp:palindromeList){
            System.out.println(temp);
        }


        Set<Long> timeSet=Sets.newHashSet();
        timeSet.add(10000000000L);
        timeSet.add(4444444444444444L);
        timeSet.add(8888888888888L);

        Collection<String> timeStrCol= Collections2.transform(timeSet, new Function<Long,String>(){

            @Override
            public String apply(Long input) {

                return new SimpleDateFormat("yyyy-MM-dd").format(input);
            }

        });

        for (String string : timeStrCol) {
            System.out.println(string);
        }


        //组合式编程
        //确保容器中的字符串长度不超过5,超过进行截取,后全部大写
        List<String> list2=Lists.newArrayList("lfj","happiness","howwww");
        Function<String,String> f1=new Function<String, String>() {

            @Override
            public String apply(String input) {
                // TODO Auto-generated method stub
                return input.length()>5?input.substring(0,5):input;
            }
        };
        Function<String, String> f2=new Function<String, String>() {

            @Override
            public String apply(String input) {
                // TODO Auto-generated method stub
                return input.toUpperCase();
            }

        };

        //组合使用
        Function<String,String> f=Functions.compose(f1, f2);
        Collection<String> result=Collections2.transform(list2, f);
        for (String string : result) {
            System.out.println(string);
        }
    }
}

输出:

        dad
        moom
        refer
        142808-11-02
        1970-04-27
        2251-09-05
        LFJ
        HAPPI
        HOWWW
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值