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


Posted by '김용환'
,