11、guava对集合的支持

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的装饰器,或实现迭代器
11、guava对集合的支持
11、guava对集合的支持
11、guava对集合的支持
11、guava对集合的支持
11、guava对集合的支持
11、guava对集合的支持

JUnit在开发中用来代码测试,而不用main方法

11、guava对集合的支持
11、guava对集合的支持
11、guava对集合的支持

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");
	}
}

11、guava对集合的支持

函数式编程

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

上一篇:创建自定义线程池推荐ThreadPoolExecutor


下一篇:SDUT PTA JAVA12 常用类(日期、数学、封装类、随机数等)习题