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