首页 > 技术文章 > <正则吃饺子> :关于Guava中 Joiner 和 Splitter 的简单使用

zhengzeze 2017-07-29 09:27 原文

在现在项目中经常看到 这两个类的使用,开始时候不明白具体是做的什么事情,就单独拿出来学习下了,参照了网上的博文,这里主要是简单的讲讲用法。

具体对这两个类,不做过多介绍,有个在线文档,需要的可以自己去看 http://www.yiibai.com/guava/guava_joiner.html

1、需要的jar

2、代码

 1 package com.joiner.test;
 2 
 3 import java.util.ArrayList;
 4 import java.util.List;
 5 import java.util.Map;
 6 
 7 import com.google.common.base.Joiner;
 8 import com.google.common.base.Splitter;
 9 import com.google.common.collect.ImmutableMap;
10 
11 /**
12  * 对 Joiner类的使用测试
13  * 
14  * @author Administrator
15  * 
16  */
17 public class JoinerTest {
18 
19     public static void main(String[] args) {
20 
21         // 项目切入点,引入我的学习
22         // Joiner.on(":").join(RedisType.SHOP_CART_SHOP.getIndex(),Joiner.on("@").join(userId,shopId));
23 
24         // 测试1
25         Joiner joiner = Joiner.on("--"); // 定义新字符串的分隔符
26         // String ss = joiner.join(new String[]{"a","b","c"}); //将数组拆开,重新组合了 //
27         // a--b--c
28         String ss = joiner.join("aa", "bb", "cc"); // 将这几个字符串重新组合了 // aa--bb--cc
29         System.out.println(ss);
30 
31         // 测试2
32         List<String> strList = new ArrayList<String>();
33         for (int i = 0; i <= 5; i++) {
34             strList.add("a" + i);
35         }
36         String s2 = joiner
37         //         .skipNulls() //可以过滤 null
38                 .on("+").join(strList);
39         System.out.println("joiner测试list:" + s2); // a0+a1+a2+a3+a4+a5
40 
41         StringBuilder builder = new StringBuilder();
42         for (String str : strList) {
43             if (null != str) {
44                 builder.append(str).append("+");
45             }
46         }
47         builder.setLength(builder.length() - 1);
48         System.out.println("传统拼接list测试:" + builder.toString()); // a0+a1+a2+a3+a4+a5
49 
50         // 测试3
51         // MapJoinner 的使用
52         // 生产一个查询id: 123,name: green的学生信息的url。
53         String url = Joiner.on("&") // 定义 传入map item之间分隔符
54                 .withKeyValueSeparator("=") // 定义 传递map项key/value之间的分隔符
55                 .join(ImmutableMap.of("id", "123", "name", "green"));
56         System.out.println("拼接的url--------" + url); // id=123&name=green
57 
58         // 测试4
59         // MapSplitter 的使用
60         // 对url中的查询字符串"id=123&name=green"进行分割
61         String urlStr = "id=123&name=green";
62         Map<String, String> map = Splitter
63                 .on("&")
64                 .withKeyValueSeparator("=")
65                 .split(urlStr);
66         System.out.println("判断map是否为空:" + map.isEmpty());
67         for (Map.Entry<String, String> set : map.entrySet()) {
68             System.out.println("key==" + set.getKey());
69             System.out.println("value==" + set.getValue());
70             // 打印结果
71             // key==id
72             // value==123
73             // key==name
74             // value==green
75         }
76 
77     }
78 
79 }

3、最后的打印效果

 

推荐阅读