基本工具:
转载自:http://my.oschina.net/indestiny/blog/215041
使用Joiner类:
- 例如我们想将字符串列表通过一个分隔符链接起来,以前的方式就是迭代,append等操作,使用Joiner可以更方便。
- Joiner一旦创建不可变,符合不变性,因此线程安全。
看一些测试用例:
01 | String delimiter = "," ; |
03 | Joiner joiner = Joiner.on(delimiter); |
06 | String excludeNullString = joiner.skipNulls().join(langs); |
08 | String replaceNullString = joiner.useForNull( "empty" ).join(langs); |
09 | System.out.println( "excludeNullString: " + excludeNullString); |
10 | System.out.println( "replaceNullString: " + replaceNullString); |
13 | String defaultNullString = joiner.join(langs); |
14 | System.out.println( "defaultNullString: " + defaultNullString); |
1 | String delimiter = "," ; |
3 | Joiner joiner = Joiner.on(delimiter).skipNulls(); |
5 | String res = joiner.join( null , "foo" , "bar" ); |
6 | System.out.println(res); |
- appendTo到实现了Appendable接口的类中:
02 | StringBuilder stringBuilder = new StringBuilder(); |
03 | Joiner joiner = Joiner.on( "," ).skipNulls(); |
04 | joiner.appendTo(stringBuilder, "appendTo" , "StringBuilder" ); |
05 | System.out.println(stringBuilder); |
08 | FileWriter writer = new FileWriter( "append_text.txt" ); |
09 | joiner.appendTo(writer, "appendTo" , "FileWriter" ); |
1 | Map<String, String> map = new HashMap<>(); |
2 | map.put( "key1" , "value1" ); |
3 | map.put( "key2" , "value2" ); |
4 | map.put( "key3" , "value3" ); |
5 | MapJoiner mapJoiner = Joiner.on( "," ).withKeyValueSeparator( "=" ); |
6 | String str = mapJoiner.join(map); |
7 | System.out.println(str); |
使用Splitter类:
- Splitter功能与Joiner相反,其对字符串进行分割操作。
- 分割字符串,返回Iterable<String>对象:
1 | String str = "try ,do , your , best" ; |
2 | Splitter splitter = Splitter.on( "," ).trimResults(); |
4 | Iterable<String> res = splitter.split(str); |
5 | System.out.println(res); |
- 使用MapSplitter分割字符串,返回Map<String, String>对象:
1 | String str = "key3=value3,key2=value2,key1=value1" ; |
2 | MapSplitter splitter = Splitter.on( "," ).withKeyValueSeparator( "=" ); |
3 | Map<String, String> map = splitter.split(str); |
4 | System.out.println(map); |
使用Strings类:
02 | padEnd(String string, int minLength, char padChar) |
04 | padStart(String string, int minLength, char padChar) |
06 | nullToEmpty(String string) |
08 | emptyToNull(String string) |
10 | isNullOrEmpty(Strng string) |
使用CharMatcher类:
1 | String tabsAndSpaces = "String with spaces and tabs" ; |
3 | String scrubbed = CharMatcher.WHITESPACE.collapseFrom(tabsAndSpaces, ' ' ); |
4 | System.out.println(scrubbed); |
1 | String tabsAndSpaces = " String with spaces and tabs" ; |
2 | String scrubbed = CharMatcher.WHITESPACE.trimAndCollapseFrom(tabsAndSpaces, ' ' ); |
3 | System.out.println(scrubbed); |
1 | String lettersAndNumbers = "foo989yxbar234" ; |
2 | String retained = CharMatcher.JAVA_DIGIT.retainFrom(lettersAndNumbers); |
3 | System.out.println(retained); |
1 | CharMatcher cm = CharMatcher.JAVA_DIGIT.or(CharMatcher.WHITESPACE); |
2 | String retained = cm.retainFrom( "foo9 89y xbar 234" ); |
3 | System.out.println(retained); |
使用Preconditions类:
- 这是一个用于判断条件的一个工具,类似junit中Aseert功能。
1 | checkNotNull(obj, "检查对象不能为空" ); |
2 | checkElementIndex(index, arr.length, "检查数组索引" ); |
3 | checkArgument(valueToSet <= 100 , "检查参数值" ); |
4 | checkState(validateObjectState(), "检查对象状态" ); |
使用Objects类:
01 | public class Book implements Comparable<Book> { |
02 | private Person author; |
04 | private String publisher; |
09 | public int compareTo(Book o) { |
10 | return ComparisonChain.start() |
11 | .compare( this .title, o.getTitle()) |
12 | .compare( this .author, o.getAuthor()) |
13 | .compare( this .publisher, o.getPublisher()) |
14 | .compare( this .isbn, o.getIsbn()) |
15 | .compare( this .price, o.getPrice()) |
20 | public int hashCode(){ |
21 | return Objects.hashCode(title, author, publisher, isbn); |
25 | public String toString() { |
26 | return Objects.toStringHelper( this ) |
29 | .add( "author" , author) |
30 | .add( "publisher" , publisher) |
32 | .add( "isbn" , isbn).toString(); |
2 | str = Objects.firstNonNull(str, "defaut value" ); |
3 | System.out.println(str); |
以上就是基本工具使用。
不吝指正。