Guava의 Joiner를 테스트한 코드이다.
Map이나 List의 내용을 특정 포맷(Joiner.on)에 맞춰 보여줄 수 있다. 이 과정에서 널 체크(skipNull)도 가능하다.
예를 들어, Map이나 List의 내용을 http 리퀘스트 url의 파라미터와 같은 포맷으로도 만들 수 있다.
private final Logger logger = LoggerFactory.getLogger(SplitterJoinerTest.class);
/*
List -> String
*/
@Test
public void joinerTest1() {
List counts = Lists.newArrayList(1, 2, 3, 4, 5);
List names = Lists.newArrayList("samuel", "kent", "flynn");
logger.info("count:{}, names:{}", Joiner.on(",").join(counts), Joiner.on(",").join(names));
} // 결과 - count:1,2,3,4,5, names:samuel,kent,flynn
/*
sequence of String -> String
*/
@Test
public void joinerTest2() {
logger.info("type:{}", Joiner.on("|").join("a", "b", "c"));
} // 결과 - type:a|b|c
/*
Map -> String
*/
@Test
public void joinerTest3() {
ImmutableMap<String, Object> map = ImmutableMap.of("name", "samuel", "age", 41, "department", "server", "id", 1001237);
Joiner.MapJoiner mapJoiner = Joiner.on('&').withKeyValueSeparator("=");
logger.info("{}" , mapJoiner.join(map));
} //결과 - name=samuel&age=41&department=server&id=1001237
/*
null checking
*/
@Test
public void joinerTest4() {
logger.info("{}" ,Joiner.on(",").skipNulls().join(Lists.newArrayList("samuel", "kent", null)));
try {
logger.info("{}", Joiner.on(",").join(Lists.newArrayList("samuel", "kent", null)));
} catch (java.lang.NullPointerException e) {
e.printStackTrace();
}
} //결과 - samuel,kent java.lang.NullPointerException at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:213)
@Test
public void joinerTest5() {
List<List<String>> list = Lists.newArrayList(
Lists.newArrayList("samuel", "jonathan", "ben", "bernad"),
Lists.newArrayList("ted", "alden", "kyle", "clark")
);
String result = Joiner.on(";").join(Iterables.transform(list,
new Function<List<String>, String>() {
@Override
public String apply(List<String> input) {
return Joiner.on("-").join(input);
}
}));
logger.info("{}", result);
} //결과 : samuel-jonathan-ben-bernad;ted-alden-kyle-clark
@Test
public void joinerTest6WithJava8() {
List<List<String>> list = Lists.newArrayList(
Lists.newArrayList("samuel", "jonathan", "ben", "bernad"),
Lists.newArrayList("ted", "alden", "kyle", "clark")
);
String result = Joiner.on(";").join(Iterables.transform(list,
s -> Joiner.on("-").join(s)));
logger.info("{}", result);
} //결과 : samuel-jonathan-ben-bernad;ted-alden-kyle-clark
'general java' 카테고리의 다른 글
Guava의 Predicate과 Filter를 이용한 예시 (0) | 2016.03.15 |
---|---|
Guava의 Joiner 예시 (0) | 2016.03.13 |
[java] guava를 이용하여 끝에 붙은 comma(,) 제거하기 (0) | 2016.03.07 |
zookeeper Max 노드(znode) 크기 (0) | 2016.01.20 |
[springboot] mybatis (0) | 2016.01.12 |