How to Use Google's Java Library Guava
Classes for Manipulating Strings
This section covers basic classes. The basic classes mainly include classes that manipulate strings: the Strings class for handling strings themselves, the Joiner class for joining strings, and the Splitter class for splitting strings.
Strings Class
The Strings class is a class for manipulating character strings. It provides the isNullOrEmpty(), emptyToNull(), and nullToEmpty() methods for checking or manipulating null and empty strings.
Let’s look at how each method is used and what result it produces.
isNullOrEmpty()
First, here is an example of the isNullOrEmpty method. It returns true if the argument value is null or empty. If a value exists, it returns false. A string containing only a half-width space also returns false.
Strings.isNullOrEmpty(null); // "true"가 반환된다.
Strings.isNullOrEmpty(""); // "true"가 반환된다.
Strings.isNullOrEmpty("a"); // "false"가 반환된다.
Strings.isNullOrEmpty(" "); // "false"가 반환된다.
package com.devkuma.guava.strings;
import com.google.common.base.Strings;
public class StringIsNullOrEmpty {
public static void main(String[] args) {
System.out.println(Strings.isNullOrEmpty(null));
System.out.println(Strings.isNullOrEmpty(""));
System.out.println(Strings.isNullOrEmpty("a"));
System.out.println(Strings.isNullOrEmpty(" "));
}
}
Execution result:
true
true
false
false
commonPrefix(), commonSuffix()
Returns the common prefix or suffix string from the two strings specified as arguments.
// commonPrefix
Strings.commonPrefix("abc12345", "abcABCDE"); // "abc"가 반환된다.
Strings.commonPrefix("setHoge", "setMoge"); // "set"가 반환된다.
// commonSuffix
Strings.commonSuffix("12345abc", "ABCabc"); // "abc"가 반환된다.
Strings.commonSuffix("removable", "usable"); // "able"가 반환된다.
package com.devkuma.guava.strings;
import com.google.common.base.Strings;
public class StringCommonPrefixCommonSuffix {
public static void main(String[] args) {
// commonPrefix
System.out.println(Strings.commonPrefix("abc12345", "abcABCDE"));
System.out.println(Strings.commonPrefix("setHoge", "setMoge"));
// commonSuffix
System.out.println(Strings.commonSuffix("12345abc", "ABCabc"));
System.out.println(Strings.commonSuffix("removable", "usable"));
}
}
Execution result:
abc
set
abc
able
padStart(), padEnd()
Pads a string with the specified character until its length reaches the specified length, and returns the resulting string.
// padStart
Strings.padStart("123", 5, '0'); // "00123"가 반환된다.
// padEnd
Strings.padEnd("123", 5, '0'); // "12300"가 반환된다.
package com.devkuma.guava.strings;
import com.google.common.base.Strings;
public class StringPadStartPadEnd {
public static void main(String[] args) {
// padStart
Strings.padStart("123", 5, '0');
// padEnd
Strings.padEnd("123", 5, '0');
}
}
Execution result:
00123
12300
repeat()
Returns a string created by repeating the string specified as an argument the specified number of times.
Strings.repeat("0", 10); // "0000000000"가 반환된다.
Strings.repeat("hey", 3); // "heyheyhey"가 반환된다.
package com.devkuma.guava.strings;
import com.google.common.base.Strings;
public class StringRepeat {
public static void main(String[] args) {
System.out.println(Strings.repeat("0", 10));
System.out.println(Strings.repeat("hey", 3));
}
}
Execution result:
0000000000
heyheyhey
Joiner Class
The Joiner class makes it easy to join strings. It provides a variety of joining methods.
Array join()
Joining a string array. The following example joins values with commas.
// "abc, def, ghi"의 문자열이 반환된다.
String[] values = {"abc", "def", "ghi"};
String result = Joiner.on(',').join(values);
package com.devkuma.guava.joiner;
import com.google.common.base.Joiner;
public class JoinerArrayJoin {
public static void main(String[] args) {
String[] values = {"abc", "def", "ghi"};
String result = Joiner.on(',').join(values);
System.out.println(result);
}
}
Execution result:
abc,def,ghi
List join()
You can also join a list of strings.
List values = new ArrayList();
values.add("abc");
values.add("def");
values.add("ghi");
String result = Joiner.on(',').join(values);
package com.devkuma.guava.joiner;
import java.util.ArrayList;
import java.util.List;
import com.google.common.base.Joiner;
public class JoinerArrayJoin {
public static void main(String[] args) {
List values = new ArrayList();
values.add("abc");
values.add("def");
values.add("ghi");
String result = Joiner.on(',').join(values);
System.out.println(result);
}
}
Execution result:
abc,def,ghi
skipNulls()
You can use the skipNulls method to skip null values when joining.
// 다음 예제의 경우 "abc, ghi"가 반환된다.
List values = new ArrayList();
values.add("abc");
values.add(null);
values.add("ghi");
String result = Joiner.on(',').skipNulls().join(values);
package com.devkuma.guava.joiner;
import java.util.ArrayList;
import java.util.List;
import com.google.common.base.Joiner;
public class JoinerSkipNullsJoin {
public static void main(String[] args) {
List values = new ArrayList();
values.add("abc");
values.add(null);
values.add("ghi");
String result = Joiner.on(',').skipNulls().join(values);
System.out.println(result);
}
}
Execution result:
abc,ghi
Joining a Map
You can also use a Map as an argument to create a key-value string.
// "name=tom&age=20" 값이 반환된다.
Map map = new HashMap();
map.put("name", "tom");
map.put("age", "20");
String result = Joiner.on('&').withKeyValueSeparator("=").join(map);
package com.devkuma.guava.joiner;
import java.util.HashMap;
import java.util.Map;
import com.google.common.base.Joiner;
public class JoinerWithKeyValueSeparator {
public static void main(String[] args) {
Map map = new HashMap();
map.put("name", "tom");
map.put("age", "20");
String result = Joiner.on('&').withKeyValueSeparator("=").join(map);
System.out.println(result);
}
}
Execution result:
name=tom&age=20
Splitter Class
The Splitter class helps split strings. It can split strings by a variety of criteria, including character count, a specified character, and key-value pairs.
fixedLength()
Using the fixedLength method of the Splitter class, you can split a string by a specified number of characters.
// 다음의 경우 "abcde", "fghij", "klmn"의 문자열 목록이 반환됩니다.
List list = Splitter.fixedLength(5).splitToList("abcdefghijklmn");
package com.devkuma.guava.splitter;
import java.util.List;
import com.google.common.base.Splitter;
public class SplitterFixedLength {
public static void main(String[] args) {
List list = Splitter.fixedLength(5).splitToList("abcdefghijklmn");
System.out.println(list);
}
}
Execution result:
[abcde, fghij, klmn]
on()
Using the on method of the Splitter class, you can split a string by the specified character.
// 다음은 쉼표로 문자열을 분할하고 "devkuma", "araikuma", "kimkc" 문자열 목록을 반환한다.
List list = Splitter.on(',').splitToList("devkuma,araikuma,kimkc");
package com.devkuma.guava.splitter;
import java.util.List;
import com.google.common.base.Splitter;
public class SplitterOn {
public static void main(String[] args) {
List list = Splitter.on(',').splitToList("devkuma,araikuma,kimkc");
System.out.println(list);
}
}
Execution result:
[devkuma, araikuma, kimkc]
Splitting a Map
Splits a key-value character string, such as a query string.
// 다음의 경우, 키 "name"에 "tom", 키 "age"에 "20"이 저장된 Map이 반환된다.
Splitter.on("&").trimResults().withKeyValueSeparator('=').split("name=devkuma&age=20");
package com.devkuma.guava.splitter;
import java.util.Map;
import com.google.common.base.Splitter;
public class SplitterWithKeyValueSeparator {
public static void main(String[] args) {
Map<String, String> map = Splitter.on("&").trimResults().withKeyValueSeparator('=').split("name=devkuma&age=20");
System.out.println(map);
}
}
Execution result:
{name=devkuma, age=20}
Range
Using Range makes it easier to determine whether a specified number or character is within a range.
package com.devkuma.guava.range;
import com.google.common.collect.Range;
public class RangeContains {
public static void main(String[] args) {
Range<Integer> range = Range.closed(1, 10); //open 은 등호 제외 1 < x < 10
int target = 3;
if (range.contains(target)) { // if (target >= 1 && target <= 10)
System.out.println("1 ~ 10 범위");
}
}
}
Execution result:
1 ~ 10 범위