1 package guavaTest;
2
3 import com.google.common.base.CharMatcher;
4 import com.google.common.base.Joiner;
5 import com.google.common.base.Splitter;
6 import com.google.common.collect.ArrayListMultimap;
7 import com.google.common.collect.Lists;
8 import com.google.common.primitives.Ints;
9 import com.google.common.util.concurrent.*;
10 import org.checkerframework.checker.nullness.compatqual.NullableDecl;
11
12 import java.util.List;
13 import java.util.Random;
14 import java.util.concurrent.ExecutorService;
15 import java.util.concurrent.Executors;
16
17 /**
18 * Google guava 的使用
19 */
20 public class GuavaTest {
21
22 //连接器(对于Joiner,常用的方法是 跳过NULL元素:skipNulls() / 对于NULL元素使用其他替代:useForNull(String))
23 // private static final Joiner joiner = Joiner.on(",").skipNulls();
24 private static final Joiner joiner = Joiner.on(",").useForNull("我是空字符串");
25
26 //分割器(对于Splitter,常用的方法是:trimResults()/omitEmptyStrings()。注意拆分的方式,有字符串,还有正则,还有固定长度分割(太贴心了!))
27 private static final Splitter splitter = Splitter.on(",").trimResults().omitEmptyStrings();
28
29
30 public static void main(String[] args) {
31
32 String join = joiner.join(Lists.newArrayList("a", null, "b"));
33 System.out.println("join:" + join);
34
35 // a, ,b,,
36 for (String tmp : splitter.split("bb,lll,kkk,,,,,,,,")) {
37 System.out.println("|" + tmp + "|");
38 }
39
40 List<Integer> integers = Ints.asList(1, 2, 3, 4, 5, 6);
41
42 System.out.println(Ints.join(",", 1, 2, 3, 4));
43
44 //原生数组类型快速合并
45 int[] concat = Ints.concat(new int[]{1, 2, 3}, new int[]{7, 8, 9});
46 System.out.println(concat.length);
47
48 //求最大、最小
49 System.out.println(Ints.max(concat) + "" + Ints.min(concat));
50
51 //是否包含,不用循环查找了
52 System.out.println(Ints.contains(concat, 9));
53
54 //集合到数组的转换
55 System.out.println(Ints.toArray(integers));
56
57 //Map<String,List<String>>
58 ArrayListMultimap<String, String> listMultimap = ArrayListMultimap.create();
59
60 listMultimap.put("张晓明", "数学");
61 listMultimap.put("张晓明", "语文");
62 listMultimap.put("张晓明", "物理");
63 listMultimap.put("王小二", "英语");
64
65 test();
66
67 }
68
69
70 public static void test() {
71
72 ExecutorService service = Executors.newFixedThreadPool(10);
73 ListeningExecutorService listeningExecutorService = MoreExecutors.listeningDecorator(service);
74 ListenableFuture<Integer> listenableFuture = listeningExecutorService.submit(() -> {
75
76 if (new Random().nextInt(3) == 2) {
77 throw new NullPointerException();
78 }
79 return 1;
80
81 });
82
83 FutureCallback<Integer> futureCallback = new FutureCallback<Integer>() {
84
85 @Override
86 public void onSuccess(@NullableDecl Integer result) {
87 System.out.println("---------" + result);
88 }
89
90 @Override
91 public void onFailure(Throwable t) {
92 System.out.println("------------" + t.getMessage());
93 }
94
95
96 };
97
98 Futures.addCallback(listenableFuture, futureCallback);
99
100
101 }
102
103 }