天天看點

Joiner的簡單了解

<code>    </code><code>public</code> <code>static</code> <code>void</code> <code>main(String[] args) {</code>

<code>        </code> 

<code>        </code><code>System.out.println(</code><code>"---------------- "</code><code>);</code>

<code>        </code><code>/**</code>

<code>         </code><code>* Google Guava提供了Joiner類專門用來連接配接String。</code>

<code>         </code><code>* 譬如說有個String數組,裡面有"a","b","c",</code>

<code>         </code><code>* 我們可以通過使用StringBuilder來建立String "a,b,c"。</code>

<code>         </code><code>*/</code>

<code>        </code><code>Joiner joiner = Joiner.on(</code><code>";"</code><code>);</code>

<code>        </code><code>String str1 = joiner.join(</code><code>new</code> <code>String[]{</code><code>"a"</code><code>,</code><code>"b"</code><code>,</code><code>"c"</code><code>});</code>

<code>        </code><code>System.out.println(</code><code>" str1 : "</code> <code>+ str1);</code>

<code>         </code><code>* 當然Joiner.join還提供了參數為Iterable的overload形式。也就是說你可以傳各種List和Set。</code>

<code>         </code><code>* 如果被連接配接String裡面要過濾null,可以這樣</code>

<code>        </code><code>Joiner joiner2 = Joiner.on(</code><code>";"</code><code>).skipNulls(); </code><code>//過濾null</code>

<code>        </code><code>String str2 = joiner2.join(</code><code>new</code> <code>String[]{</code><code>"a"</code><code>,</code><code>"b"</code><code>,</code><code>null</code><code>,</code><code>"c"</code><code>});</code>

<code>        </code><code>List&lt;String&gt; list = </code><code>new</code> <code>ArrayList&lt;String&gt;();</code>

<code>        </code><code>list.add(</code><code>"1"</code><code>);</code>

<code>        </code><code>list.add(</code><code>"2"</code><code>);</code>

<code>        </code><code>list.add(</code><code>null</code><code>);</code>

<code>        </code><code>list.add(</code><code>"3"</code><code>);</code>

<code>        </code><code>String str21 = joiner2.join(list);</code>

<code>        </code><code>System.out.println(</code><code>" str2 : "</code> <code>+ str2);</code>

<code>        </code><code>System.out.println(</code><code>" str21 : "</code> <code>+ str21);</code>

<code>         </code><code>* 如果對null進行替換操作</code>

<code>        </code><code>Joiner joiner3 = Joiner.on(</code><code>";"</code><code>).useForNull(</code><code>"!"</code><code>);</code>

<code>        </code><code>String str3 = joiner3.join(</code><code>new</code> <code>String[]{</code><code>"a"</code><code>,</code><code>"b"</code><code>,</code><code>null</code><code>,</code><code>"c"</code><code>});</code>

<code>        </code><code>System.out.println(</code><code>" str3 : "</code> <code>+ str3);</code>

<code>         </code><code>* Joiner還提供了appendTo函數,對傳入的StringBuider作處理</code>

<code>        </code><code>Joiner joiner4 = Joiner.on(</code><code>";"</code><code>);</code>

<code>        </code><code>StringBuilder ab = </code><code>new</code> <code>StringBuilder(</code><code>"start : "</code><code>);</code>

<code>        </code><code>StringBuilder str4 = joiner4.appendTo(ab, </code><code>new</code> <code>String[]{</code><code>"a"</code><code>,</code><code>"b"</code><code>,</code><code>"c"</code><code>});</code>

<code>        </code><code>System.out.println(</code><code>" str4 : "</code> <code>+ str4.toString());</code>

<code>         </code><code>* MapJoiner類也利用了Joiner提供的Map的join功能</code>

<code>        </code><code>Map&lt;Integer, String&gt; map = </code><code>new</code> <code>HashMap&lt;Integer, String&gt;();</code>

<code>        </code><code>map.put(</code><code>1</code><code>, </code><code>"a"</code><code>);</code>

<code>        </code><code>map.put(</code><code>2</code><code>, </code><code>"b"</code><code>);</code>

<code>        </code><code>MapJoiner joiner5 = Joiner.on(</code><code>";"</code><code>).withKeyValueSeparator(</code><code>"→"</code><code>);</code>

<code>        </code><code>String str5 = joiner5.join(map);</code>

<code>        </code><code>System.out.println(</code><code>" str5 : "</code> <code>+ str5);</code>

<code>        </code><code>//url拼接</code>

<code>        </code><code>Map&lt;String, Object&gt; map2 = </code><code>new</code> <code>HashMap&lt;String, Object&gt;();</code>

<code>        </code><code>map2.put(</code><code>"param1"</code><code>, </code><code>"HAN"</code><code>);</code>

<code>        </code><code>map2.put(</code><code>"param2"</code><code>, </code><code>2</code><code>);</code>

<code>        </code><code>MapJoiner joiner6 = Joiner.on(</code><code>"&amp;"</code><code>).withKeyValueSeparator(</code><code>"="</code><code>);</code>

<code>        </code><code>String str6 = joiner6.join(map2);</code>

<code>        </code><code>System.out.println(</code><code>" str6 : "</code> <code>+ str6);</code>

<code>        </code><code>String str7 = joiner6.join(ImmutableMap.of(</code><code>"id"</code><code>,</code><code>"123"</code><code>,</code><code>"name"</code><code>,</code><code>"green"</code><code>));</code>

<code>        </code><code>System.out.println(</code><code>" str7 : "</code> <code>+ str7);</code>

<code>        </code><code>//分割</code>

<code>        </code><code>final</code> <code>Map&lt;String, String&gt; join = Splitter.on(</code><code>"&amp;"</code><code>).withKeyValueSeparator(</code><code>"="</code><code>).split(</code><code>"id=123&amp;name=green&amp;param1=HAN&amp;param2=2"</code><code>);</code>

<code>        </code><code>System.out.println(</code><code>" map :"</code> <code>+ join.toString());</code>

<code>    </code><code>}</code>

     本文轉自韓立偉 51CTO部落格,原文連結:http://blog.51cto.com/hanchaohan/1931272,如需轉載請自行聯系原作者