關於 google的guava公共庫的測試demo

最近在學習,guava公共庫的一些基本功能,確實的是可以提高開發效率,並且有些地方確實很好用。

代碼可以直接打開需要測試的地方進行運行。

不包含,net,事件總線,併發編程,反射和緩存。

手冊地址:http://tool.oschina.net/apidocs/apidoc?api=guava

中文學習:http://ifeve.com/google-guava-using-and-avoiding-null

總的來說,印象深刻的就是,multiset和multimap這2個概念,很有用。當然還是有很多精彩的細節地方,學會了事半功倍。學習測試一下api吧

package com.iqoo.common;

import java.io.File;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;

import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.junit.Test;

import com.google.common.base.Charsets;
import com.google.common.base.Objects;
import com.google.common.io.Files;

/**
 * Created by hank on 2016/6/3.
 */
public class demo {

    @Test
    public void test() throws IOException, SQLException, InvalidFormatException {
        // optional 模擬,對象引用爲null,返回默認值
        // Optional possible = Optional.fromNullable(null);
        // System.out.println(possible.or(2));

        // 提前條件預判,拋出異常
        // Preconditions.checkNotNull(null,"this is error");

        // objects判斷null相等
        // System.out.println(Objects.equal(null, null));

        // hashcode通過傳入不同的字段,自動計算
        // System.out.println(Objects.hashCode("han","kun"));
        // System.out.println(Objects.hashCode("han","kun",1));
        // System.out.println(Objects.hashCode("han","kun",1));

        // toStringHelper編寫調試
//        System.out.println(Objects.toStringHelper(this).add("name", "hank").toString());

        // compareTo這種對比,多個字段的時候
        // System.out.println(ComparisonChain.start().compare(1, 3).result());
        // System.out.println(ComparisonChain.start().compare('a', 'b').result());

        // ordering比較器
        // List<Integer> list = Lists.newArrayList();
        // list.add(1);
        // list.add(2);
        // list.add(3);
        // list.add(11);
        // list.add(21);
        // Ordering<Integer> naturalOrdering = Ordering.natural();
        // Ordering<Object> usingToStringOrdering = Ordering.usingToString();
        // Ordering<Object> arbitraryOrdering = Ordering.arbitrary();
        // System.out.println("自然順序(數字大小):"+ naturalOrdering.sortedCopy(list));
        // System.out.println("字符串順序:"+ usingToStringOrdering.sortedCopy(list));
        // System.out.println("隨機順序:"+ arbitraryOrdering.sortedCopy(list));

        // 捕獲異常後,繼續拋出異常
        // try {
        // int a = 1;
        // throw new IOException();
        // throw new SQLException();
        // }
        // catch (Throwable t) {
        // 只有io異常拋出
        // Throwables.propagateIfInstanceOf(t, IOException.class);
        // 只有sql異常拋出
        // Throwables.propagateIfInstanceOf(t, SQLException.class);
        // 只有Error或RuntimeException異常拋出
        // Throwables.propagateIfPossible(t);
        // Error或RuntimeException,直接拋出
        // throw Throwables.propagate(t);
        // }

        // 不可變集合
        // final ImmutableSet<String> colors = ImmutableSet.of("red","blue","green");
        // ImmutableList<String> colorsList = colors.asList();
        // System.out.println(colors.size());
        // 重複的set
        // Multiset m = HashMultiset.create();
        // m.add("han");
        // m.add("han");
        // m.add("han");
        // m.add("kun");
        // System.out.println(m.count("han"));

        // Multimap<String, String> myMultimap = ArrayListMultimap.create();
        //
        // 添加鍵值對
        // myMultimap.put("Fruits", "Bannana");
        // 給Fruits元素添加另一個元素
        // myMultimap.put("Fruits", "Apple");
        // myMultimap.put("Fruits", "Pear");
        // myMultimap.put("Vegetables", "Carrot");
        // myMultimap.put("Fruits", "Bannana");
        // System.out.println(myMultimap.get("Fruits"));

        // Multimap<String,String> map = HashMultimap.create();
        // map.put("name","han");
        // map.put("name","kkkk");
        // map.put("yourname","xxx");
        // map.put("yourname","yyy");
        // map.put("yourname","www");
        // System.out.println(map.get("name"));
        // System.out.println(map.size());
        // System.out.println(map.keySet());
        // 區別,一個爲空集合,一個爲null
        // System.out.println(map.get("hello"));
        // System.out.println(map.asMap().get("hello"));

        // BiMap<String, Integer> userId = HashBiMap.create();
        // userId.put("hank",123);
        // 反向映射
        // System.out.println(userId.forcePut("hank",345));
        // System.out.println(userId.inverse().get(123));
        // System.out.println(userId.inverse().get(345));

        // 二維座標確定一個值
        // Table<Integer, Integer, String> pos = HashBasedTable.create();
        // pos.put(1,1,"han");
        // pos.put(1,2,"hello");
        // pos.put(2,1,"world");
        // pos.put(2,2,"kun");
        // System.out.println(pos.row(1));
        // System.out.println(pos.column(1));
        // System.out.println(pos.cellSet().size());

        // RangeSet<Integer> range = TreeRangeSet.create();
        // range.add(Range.open(1,2));
        // range.add(Range.open(2,3));
        // range.add(Range.open(4,5));
        // range.add(Range.open(6,10));
        // 包含所有區間的最小區間
        // System.out.println(range.span());
        // System.out.println(range);
        // 區間補集
        // System.out.println(range.complement());
        // System.out.println(range.asRanges());
        // System.out.println(range.contains(2));
        // 返回包含的區間
        // System.out.println(range.rangeContaining(2));
        // 是否包含區間
        // System.out.println(range.encloses(Range.open(3,4)));
        // System.out.println(range.encloses(Range.open(4,5)));
        // System.out.println(range.encloses(Range.open(5,6)));
        // System.out.println(range.encloses(Range.open(5,7)));
        // 是否和子區間相交
        // System.out.println(range.subRangeSet(Range.open(3,4)).isEmpty());
        // System.out.println(range.subRangeSet(Range.open(4,5)).isEmpty());
        // System.out.println(range.subRangeSet(Range.open(5,6)).isEmpty());
        // System.out.println(range.subRangeSet(Range.open(5,7)).isEmpty());

        // RangeMap<Integer,String> map = TreeRangeMap.create();
        // map.put(Range.open(1,2),"han");
        // map.put(Range.open(2,3),"kun");
        // System.out.println(map);
        // 注意區別,覆蓋了上面的區間
        // map.put(Range.open(1,3),"hello");
        // System.out.println(map);

        // List<String> theseElements = Lists.newArrayList("alpha", "beta", "gamma");
        // System.out.println(theseElements);

        // Iterable<Integer> concatenated = Iterables.concat(
        // Ints.asList(1, 2, 3),
        // Ints.asList(4, 5, 6)); // concatenated包括元素 1, 2, 3, 4, 5, 6
        // System.out.println(concatenated);
        // List countUp = Ints.asList(1, 2, 3, 4, 5);
        // System.out.println(countUp);
        // List countDown = Lists.reverse(countUp); // {5, 4, 3, 2, 1}
        // System.out.println(countDown);
        // List<List> parts = Lists.partition(countUp, 2);//{{1,2}, {3,4}, {5}}
        // System.out.println(parts);

        // List strs = Lists.newArrayList("han","hello","name");
        // 索引必須唯一,否則報錯
        // ImmutableMap<Integer, String> map = Maps.uniqueIndex(strs, new Function<String, Integer>() {
        // @Override
        // public Integer apply(String st) {
        // return st.length();
        // }
        // });
        // System.out.println(map);

        // ImmutableSet<String> set = ImmutableSet.of("aaa","bbb","c","dd","ee","ff","gg");
        // Function<String,Integer> function = new Function<String, Integer>() {
        // @Override
        // public Integer apply(String s) {
        // return s.length();
        // }
        // };
        // ImmutableListMultimap<Integer,String> list = Multimaps.index(set,function);
        // System.out.println(list);
        // 翻轉映射
        // ArrayListMultimap<String,Integer> map = ArrayListMultimap.create();
        // map.putAll("a", Ints.asList(1,2,3));
        // map.putAll("b", Ints.asList(4,2,3));
        // map.putAll("c", Ints.asList(4,5,3));
        // TreeMultimap<Integer,String> inverse = Multimaps.invertFrom(map,TreeMultimap.<Integer, String>create());
        // System.out.println(inverse);

        // Map<String,Integer> map = ImmutableMap.of("a",1,"b",1,"c",2);
        // SetMultimap setMultimap = Multimaps.forMap(map);
        // Multimap<Integer,String> inverse = Multimaps.invertFrom(setMultimap, HashMultimap.create());
        // System.out.println(inverse);

        // Map<String,String> map = new HashMap<String,String>();
        // map.put("1", "b");
        // map.put("2","d");
        // String mapJoinResult = Joiner.on(",").withKeyValueSeparator("=").join(map);
        // System.out.println(mapJoinResult);
        // Joiner joiner = Joiner.on(",");
        // 下面報錯
        // System.out.println(joiner.join("hank",null,"kun"));
        // 正常
        // Joiner joiner1 = Joiner.on(",").skipNulls();
        // System.out.println(joiner1.join("hank",null,"kun"));

        // String test = " ,a,,b,";
        // jdk正常模式
        // System.out.println(test.split(",").length);
        // System.out.println(Splitter.on(",").omitEmptyStrings().trimResults().split(test));

        // HashCode hashCode = Hashing.md5().newHasher().putString("name", Charsets.UTF_8).hash();
        // System.out.println(hashCode.hashCode());

        // TypeToken<Function<Integer, String>> funToken = new TypeToken<Function<Integer, String>>() {};
        //
        // TypeToken<?> funResultToken = funToken.resolveType(Function.class.getTypeParameters()[1]);
        // System.out.println(funResultToken.getType());

        // 讀寫文件
        // writeFile("first","hank is good");
        // readFile("first");
        // copyFile("first","second");

    }

    void writeFile(String name, String content) {
        File file = new File(name);
        try {
            Files.write(content.getBytes(), file);
        }
        catch (IOException e) {
            e.printStackTrace();
        }
    }

    void readFile(String name) {
        File file = new File(name);
        System.out.println(Files.getNameWithoutExtension("first"));
        System.out.println(Files.getFileExtension("first.txt"));
        try {
            List<String> strings = Files.readLines(file, Charsets.UTF_8);
            System.out.println(strings);

        }
        catch (IOException e) {
            e.printStackTrace();
        }
    }

    void copyFile(String src, String dest) {
        File srcFile = new File(src);
        File destFile = new File(dest);
        try {
            Files.copy(srcFile, destFile);
        }
        catch (IOException e) {
            e.printStackTrace();
        }
    }
}


發佈了107 篇原創文章 · 獲贊 8 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章