guava
package com.bjsxt.others.guava;import java.util.ArrayList;
import java.util.Collections;
import java.util.List;import com.google.common.collect.ImmutableList;/*** 只讀設置* @author Administrator**/
public class Demo01 {/*** @param args*/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);//java.lang.UnsupportedOperationException//readList.add("d");list.add("d"); //改變原有List 視圖也一起改變//對比 查看 初始化List guava對只讀設置 安全可靠,并且相對簡單List<String> immutableList =ImmutableList.of("a", "b", "c"); immutableList.add("d");//java.lang.UnsupportedOperationException
}} package com.bjsxt.others.guava;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.transfer() 轉換* Functions.compose()組合式函數編程* @author Administrator**/
public class Demo02 {/*** @param args*/public static void main(String[] args) {//組合式函數編程//確保容器中的字符串長度不超過5,超過進行截取,后全部大寫List<String> list =Lists.newArrayList("bjsxt","good","happiness");//確保容器中的字符串長度不超過5,超過進行截取Function<String,String> f1 =new Function<String,String>(){@Overridepublic String apply(String input) {return input.length()>5?input.substring(0,5):input;}};//轉成大寫Function<String,String> f2 =new Function<String,String>(){@Overridepublic String apply(String input) {return input.toUpperCase();}};//String =f2(f1(String))Function<String,String> f =Functions.compose(f1, f2);Collection<String> resultCol =Collections2.transform(list, f);for(String temp:resultCol){System.out.println(temp);}}/*** 轉換*/public static void test2(){//類型轉換Set<Long> timeSet =Sets.newHashSet();timeSet.add(10000000L);timeSet.add(99999999999999999L);timeSet.add(2000000000L);Collection<String> timeStrCol =Collections2.transform(timeSet, new Function<Long,String>(){@Overridepublic String apply(Long input) {return new SimpleDateFormat("yyyy-MM-dd").format(input);}});for(String temp:timeStrCol){System.out.println(temp);}}/*** 過濾器*/public static void test1(){//創建List 靜態初始化List<String> list =Lists.newArrayList("moom","son","dad","bjsxt","refer");//找出回文 palindrome backwords mirror words//匿名內部類對象: 匿名內部類,同時創建類對象Collection<String> palindromeList =Collections2.filter(list, new Predicate<String>(){@Overridepublic boolean apply(String input) {//業務邏輯return new StringBuilder(input).reverse().toString().equals(input);}});for(String temp:palindromeList){System.out.println(temp);}}}
package com.bjsxt.others.guava;import java.util.Set;import com.google.common.collect.Sets; import com.google.common.collect.Sets.SetView;/*** 集合的操作:交集、差集、并集* Sets.intersection()* Sets.difference()* Sets.union();* @author Administrator**/ public class Demo04 {/*** @param args*/public static void main(String[] args) {Set<Integer> sets =Sets.newHashSet(1,2,3,4,5,6);Set<Integer> sets2 =Sets.newHashSet(3,4,5,6,7,8,9);//交集System.out.println("交集為:");SetView<Integer> intersection =Sets.intersection(sets, sets2);for(Integer temp:intersection){System.out.println(temp);}//差集System.out.println("差集為:");SetView<Integer> diff =Sets.difference(sets, sets2);for(Integer temp:diff){System.out.println(temp);}//并集System.out.println("并集為:");SetView<Integer> union =Sets.union(sets, sets2);for(Integer temp:union){System.out.println(temp);}}}
?
?
package com.bjsxt.others.guava;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;/*** 加入約束條件:非空、長度驗證* Constraint* Preconditions* Constraints* @author Administrator**/ public class Demo03 {/*** @param args*/public static void main(String[] args) {Set<String> sets =Sets.newHashSet();//創建約束Constraint<String> constraint =new Constraint<String>(){@Overridepublic String checkElement(String element) {//非空驗證 Preconditions.checkNotNull(element);//長度驗證 5-20為字符串Preconditions.checkArgument(element.length()>=5 && element.length()<=20);return element;}};Set<String> cs =Constraints.constrainedSet(sets, constraint);//cs.add(null); //java.lang.NullPointerException// cs.add("good"); //java.lang.IllegalArgumentExceptioncs.add("bjsxt");for(String str:cs){System.out.println(str);}}}
package com.bjsxt.others.guava;import java.util.Set;import com.google.common.collect.Sets; import com.google.common.collect.Sets.SetView;/*** 集合的操作:交集、差集、并集* Sets.intersection()* Sets.difference()* Sets.union();* @author Administrator**/ public class Demo04 {/*** @param args*/public static void main(String[] args) {Set<Integer> sets =Sets.newHashSet(1,2,3,4,5,6);Set<Integer> sets2 =Sets.newHashSet(3,4,5,6,7,8,9);//交集System.out.println("交集為:");SetView<Integer> intersection =Sets.intersection(sets, sets2);for(Integer temp:intersection){System.out.println(temp);}//差集System.out.println("差集為:");SetView<Integer> diff =Sets.difference(sets, sets2);for(Integer temp:diff){System.out.println(temp);}//并集System.out.println("并集為:");SetView<Integer> union =Sets.union(sets, sets2);for(Integer temp:union){System.out.println(temp);}}}
?
package com.bjsxt.others.guava;import com.google.common.collect.BiMap; import com.google.common.collect.HashBiMap;/*** HashMap 鍵唯一,值可以重復* BiMap:雙向Map(Bidirectional Map ) 鍵與值都不能重復(unique -valued map)* @author Administrator**/ public class Demo07 {/*** @param args*/public static void main(String[] args) {BiMap<String,String> bimap=HashBiMap.create();bimap.put("bjsxt", "bjsxt@sina.com");bimap.put("good","good@qq.com");//通過郵箱找用戶String user =bimap.inverse().get("good@qq.com");System.out.println(user);System.out.println(bimap.inverse().inverse()==bimap);}}?
?
package com.bjsxt.others.guava;import java.util.Map; import java.util.Set;import com.google.common.collect.HashBasedTable; import com.google.common.collect.Table; import com.google.common.collect.Table.Cell; import com.google.common.collect.Tables;/*** 雙鍵的Map -->Table -->rowKey+columnKey+value* 1、方法* 所有的行數據:cellSet()* 所有的學生: rowKeySet()* 所有的課程:columnKeySet()* 所有的成績: values()* 學生對應的課程: rowMap() +get(學生)* row(學生)* 課程對應的學生: columnMap +get(課程)* column(課程)* @author Administrator**/ public class Demo08 {/*** @param args*/public static void main(String[] args) {Table<String,String,Integer> tables=HashBasedTable.create();//測試數據tables.put("a", "javase", 80);tables.put("b", "javase", 90);tables.put("a", "oracle", 100);tables.put("c", "oracle", 95);//所有的行數據Set<Cell<String,String,Integer>> cells =tables.cellSet();for(Cell<String,String,Integer> temp:cells){System.out.println(temp.getRowKey()+"-->"+temp.getColumnKey()+"-->"+temp.getValue());}System.out.println("==========學生查看成績==============");System.out.print("學生\t");//所有的課程Set<String> cours =tables.columnKeySet();for(String t:cours){System.out.print(t+"\t");}System.out.println();//所有的學生Set<String> stus =tables.rowKeySet();for(String stu:stus){System.out.print(stu+"\t");Map<String,Integer> scores =tables.row(stu);for(String c:cours){System.out.print(scores.get(c)+"\t");}System.out.println();}System.out.println("==========課程查看成績==============");System.out.print("課程\t");//所有的學生Set<String> stuSet =tables.rowKeySet();for(String t:stuSet){System.out.print(t+"\t");}System.out.println();//所有的課程Set<String> courSet =tables.columnKeySet();for(String c:courSet){System.out.print(c+"\t");Map<String,Integer> scores =tables.column(c);for(String s:stuSet){System.out.print(scores.get(s)+"\t");}System.out.println();}System.out.println("===========轉換===========");Table<String,String,Integer> tables2 =Tables.transpose(tables);//所有的行數據Set<Cell<String,String,Integer>> cells2 =tables2.cellSet();for(Cell<String,String,Integer> temp:cells2){System.out.println(temp.getRowKey()+"-->"+temp.getColumnKey()+"-->"+temp.getValue());}}}轉載于:https://www.cnblogs.com/sunhan/p/4003977.html
總結
- 上一篇: 怎么进入bios设置优盘 优盘如何进入B
- 下一篇: 天气预报接口和城市代码