guava ---只读,过滤,转换,组合,约束
来源:互联网 发布:淘宝规则虚假交易 编辑:程序博客网 时间:2024/05/17 23:39
guava —只读,过滤,转换,组合,约束
只读
相比较Collections中的只读方法 , 不存在原先的改变的情况 , 所以这样更安全;
代码如下
package club.dohacker.guava;import java.util.List;import com.google.common.collect.ImmutableList;/** * 组合函数式编程 * @author Administrator * */public class Test3 { public static void main(String[] args) { //获得一个不可只有只读特性的list List<String> list = ImmutableList.of("abc","def","ghi");// java.lang.UnsupportedOperationException list.add("b"); }}
过滤
创建一个Predicate 对象 , 后Collections2.filter()方法会将集合中每一个元素按照Predicate中的Predicate方法来过一遍就得到了过滤的结果
Collection col = Collections2.filter(Collection coll,Precicate pre);
代码如下所示
package club.dohacker.guava;import java.util.Collection;import java.util.List;import com.google.common.base.Predicate;import com.google.common.collect.Collections2;import com.google.common.collect.Lists;/** * 测试Guava中过滤器的使用 * @author Administrator * */public class Test1 { @SuppressWarnings("unchecked") public static void main(String[] args) { //创建一个集合 List<String> list = Lists.newArrayList("abc","asddsa","123321","123123"); //开始对集合中的数据元素开始过滤 Collection<String> col = Collections2.filter(list, new Predicate<String>(){ @Override public boolean apply(String arg0) { //开始创建怎样过滤的内容 if(new StringBuilder(arg0).reverse().toString().equals(arg0)){ return true; } return false; } }); //输出已经过滤成功的容器中的对象 for(String temp : col){ System.out.println(temp); } }}
转换
将集合根据函数对象new Function() 中apply方法中具体操作 , 对集合中的每一个元素都进行一次转换的操作
Collection inte_col = Collections2.transform(Collection coll,Function function);
代码如下
package club.dohacker.guava;import java.util.Collection;import java.util.List;import com.google.common.base.Function;import com.google.common.collect.Collections2;import com.google.common.collect.Lists;/** * 测试转换的使用 * @author Administrator * */public class Test2 { public static void main(String[] args) { List<String> list = Lists.newArrayList("123","456","789"); //开始过滤 Collection<Integer> inte_col = Collections2.transform(list,new Function<String,Integer>(){ @Override public Integer apply(String arg0) { return Integer.parseInt(arg0); } }); //输出集合中的元素 for(Integer inte : inte_col){ System.out.println(inte); } }}
组合函数式编程
假设有函数f1,函数f2
则组合函数以后得 : f2(f1)
先进行函数1的功能 ,再进行函数2的功能
代码的如下
package club.dohacker.guava;import java.util.Collection;import java.util.List;import com.google.common.base.Function;import com.google.common.base.Functions;import com.google.common.collect.Collections2;import com.google.common.collect.Lists;public class Test4 { public static void main(String[] args) { List<String> list = Lists.newArrayList("aasdasd","123456789","asasbdasd","asasd","as"); //函数1将 : 将里面长度大于5的都进行截取 , 获取长度小于等于5的字符串 Function<String,String> func1 = new Function<String,String>(){ @Override public String apply(String arg0) { if(arg0.length()>=5){ return arg0.substring(0, 5); } return arg0; } }; //函数2将 : 将字符串转换成大写; Function<String,String> func2 = new Function<String,String>(){ @Override public String apply(String arg0) { return arg0.toUpperCase(); } }; //组合函数1 和 函数 2 获取一个函数将字符串经过截取以后再转换成大写的字符串 Function<String,String> func3 = Functions.compose(func1, func2); //开始进行对集合的转换 Collection<String> coll = Collections2.transform(list,func3); //输出 for(String temp:coll){ System.out.println(temp); } }}
约束
创建一个Constraint对象 , 实现其内部的checkElement 方法来完成检验
其内部需要使用Precondition 类中的某些方法来完成对参数的检验
代码如下
package club.dohacker.guava;import java.util.HashSet;import java.util.Set;import com.google.common.base.Preconditions;import com.google.common.collect.Constraint;import com.google.common.collect.Constraints;import com.google.common.collect.Sets;/** * 测试guava 中的 * @author Administrator * */public class Test5 { public static void main(String args[]){ Constraint<String> cons = new Constraint<String>(){ public String checkElement(String arg0) { //需要使用Precondition类中的方法来进行判断; Preconditions.checkNotNull(arg0); Preconditions.checkArgument(true); return null; } }; HashSet<String> set = Sets.newHashSet(); Set<String> set_temp = Constraints.constrainedSet(set,cons); //java.lang.NullPointerException set_temp.add("aadsa"); System.out.print("a"); }}
阅读全文
0 0
- guava ---只读,过滤,转换,组合,约束
- guava之只读、函数式编程(过滤、转换、组合 )、约束和集合
- guava之只读、函数式编程(过滤 转换 约束)、集合与apacheJAVA134-135
- guava之只读、函数式编程(过滤、转换)
- 135_容器_guava之_只读_函数式编程(过滤、转换、组合 )_约束_集合
- [Guava]——只读设置
- java guava 创建约束
- Guava ---- Range范围过滤
- Guava collect 过滤集合
- 组合约束
- [Guava]——加入约束
- Google guava 集合的创建特性和只读特性
- 组合索引,索引内过滤
- Guava中针对集合的 filter和过滤功能
- Guava中针对集合的 filter和过滤功能
- Guava
- Guava
- Guava
- 第十六课 更新和删除数据
- Volley源码(一)--不考虑缓存
- java关于synchronized的某些知识
- 乱搞Android之Binder生命周期探讨
- C语言用指针 二次指针和数组的差别
- guava ---只读,过滤,转换,组合,约束
- Ubuntu 16.04 安装QQ, TIM
- “32位程序/64位程序” VS “32位机器/64位机器” 那点事
- iOS Hacker 越狱后如何使用 root 运行应用
- 【python】解析不规则json文件批量获取指定字符串
- 九月英语--坚持topic
- Python 类,函数重载
- 文章标题
- 用settimeout,在dom加载后执行方法