11、guava对集合的支持
版本下载:https://repo1.maven.org/maven2/com/google/guava/guava/
Guava工程包含了若干被Google的 Java项目广泛依赖 的核心库,例如:集合 [collections] 、缓存 [caching] 、原
生类型支持 [primitives support] 、并发库 [concurrency libraries] 、通用注解 [common annotations] 、字符
串处理 [string processing] 、I/O 等等。 所有这些工具每天都在被Google的工程师应用在产品服务中。
Guava对JDK集合的扩展,这是Guava最成熟和为人所知的部分。
1、 不可变集合:用不变的集合进行防御性编程和性能提升。
2 、新集合类型: multisets, multimaps, tables,等
3、 强大的集合工具类:提供java.util.Collections中没有的集合工具
4 、扩展工具类:让实现和扩展集合类变得更容易,比如创建Collection的装饰器,或实现迭代器
JUnit在开发中用来代码测试,而不用main方法
import java.awt.List;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import org.junit.Test;
import com.google.common.collect.ImmutableList;
public class GavaDome {
@Test //(注解)
public void testGuaval() {
System.out.println("test guava");
//java.util.List<String> list=Arrays.asList("jack","tom");
//list.add("vinec");
ArrayList<String> list=new ArrayList<String>();
list.add("tom");
list.add("lily");
list.add("bin");
// java.util.List<String> readList=Collections.unmodifiableList(list);
// readList.add("jcke");
// ImmutableList<String> iList=ImmutableList.of("jack","tom","lily");
// iList.add("vince");
}
}
函数式编程
1、只读设置
2、函数式编程:过滤器
3、函数式编程:转换
4、组合式函数编程
5、加入约束:非空、长度验证
6、集合操作:交集、差集、并集
7、Multiset:无序可重复
8、Multimap key可以重复
9、BiMap:双向Map(bidirectional Map) 键与值不能重复
10、双键的Map -->Table —>rowKey+columnKye+value
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Set;
import org.junit.Test;
import com.google.common.base.Function;
import com.google.common.base.Functions;
import com.google.common.collect.Collections2;
import com.google.common.collect.Sets;
public class GavaDome {
/*
* 组合式
*/
@Test
public void testGuaval2() {
ArrayList<String> list=new ArrayList<String>();
list.add("jack");
list.add("tom");
list.add("Jacks");
list.add("lily");
Function<String,String> f1=new Function<String,String>(){
@Override
public String apply(String t) {
// TODO Auto-generated method stub
return t.length()>4?t.substring(0,3):t;
}
};
Function<String,String> f2=new Function<String,String>(){
@Override
public String apply(String t) {
// TODO Auto-generated method stub
return t.toUpperCase();
}
};
Function<String, String> f=Functions.compose(f1, f2);
Collection<String> s=Collections2.transform(list,f);
s.forEach(System.out::println);
}
/*
* 转换
*/
@Test //(注解)
public void testGuaval1() {
Set<Long> sets=Sets.newHashSet(346187L,245633L,34573L);
Collection<String> timeCollect=Collections2.transform(sets, (s)->new SimpleDateFormat("yyy-MM-dd").format(s));
timeCollect.forEach(System.out::println);
}
/*
* 过滤器
*/
@Test //(注解)
public void testGuaval() {
ArrayList<String> list=new ArrayList<String>();
list.add("jack");
list.add("tom");
list.add("lily");
list.add("lily");
Collection<String> result=Collections2.filter(list, (e)->e.startsWith("l"));
result.forEach(System.out::println);
}
}
1970-01-01
1970-01-01
1970-01-01
JACK
TOM
JAC
LILY
lily
lily
注意不要忽略@Test