[자바] Guava 를 이용한 코드 작성
Google 이란 이름은 무한 신뢰하게 됩니다.
Guava 는 그러한 Google 에서 만든 오픈소스 라이브러리입니다. (과일을 이야기 하는 것이 아닙니다.)
가독성 있는 코드를 작성하기 위한 많은 유틸 클래스를 제공합니다.
이하 Guava 를 이용한 간단한 샘플 코드입니다. 추후 계속 업데이트할 예정입니다.
이하 Guava 를 이용한 간단한 샘플 코드입니다. 추후 계속 업데이트할 예정입니다.
Test Guava Version
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>12.0.1</version>
</dependency>
1.문자열 length 기준으로 split 하기
String fruits = "사과딸기레몬포도";
Iterable<String> split = Splitter.fixedLength(2).split(fruits); //2자 단위로 split
Iterator<String> iterator = split.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
OUTPUT:
사과
딸기
레몬
포도
딸기
레몬
포도
2.Literal list & Sort
List<Integer> number = Lists.newArrayList(1, 8, 4, 10, 5, 9 ,2 ,3 ,6 ,7);
Ordering<Integer> descNumber = new Ordering<Integer>() {
@Override
public int compare(@Nullable Integer origin, @Nullable Integer target) {
return Ints.compare(origin, target);
}
};
Collections.sort(number, descNumber);
System.out.println(number);
OUTPUT:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
3.Grouping
public static void main(String[] args) {
List<Emp> empList = Lists.newArrayList(new Emp("Tom","개발팀"),
new Emp("Sara","개발팀"),
new Emp("Kris","운영팀"),
new Emp("Corn","운영팀"),
new Emp("Foo","경영팀")
);
Function<Emp, String> byDept = new Function<Emp, String>() {
public String apply(@NonNull Emp emp) {
return emp.getDept();
}
};
ImmutableListMultimap<String, Emp> index = Multimaps.index(empList, byDept);
System.out.println(index.get("개발팀"));
}
static class Emp {
private final String name;
private final String dept;
public Emp(String name, String dept) {
this.name = name;
this.dept = dept;
}
public String toString() {
return name+":"+dept;
}
public String getDept() {
return dept;
}
}
OUTPUT:
[Tom:개발팀, Sara:개발팀]
4.String Joining
public static void main(String[] args) {
List<String> fruitList = Lists.newArrayList("딸기","사과","바나나","키위","수박");
String joinResult = Joiner.on(",").join(fruitList);
System.out.println(joinResult);
}
OUTPUT:
[딸기,사과,바나나,키위,수박]
5.Readable Range
Range<Integer> range = Ranges.closed(1, 10); //open 은 등호 제외 1 < x < 10
int target = 3;
if (range.contains(target)) { // if (target >= 1 && target <= 10)
System.out.println("1 ~ 10 범위");
}
OUTPUT:
1 ~ 10 범위
6.Collection literal
ImmutableList<String> list = ImmutableList.of("apple", "lemon", "banana", "grape");
System.out.println(list);
ImmutableSet<String> set = ImmutableSet.of("apple", "lemon", "banana", "grape", "apple");
System.out.println(set);
ImmutableMap<String, String> map = ImmutableMap.of("name", "martin", "gender", "male");
System.out.println(map);
//java 9 +
/*
List<String> list = List.of("apple", "lemon", "banana", "grape", "apple");
Set<String> set = Set.of("apple", "lemon", "banana", "grape", "apple");
*/
OUTPUT:
[apple, lemon, banana, grape][apple, lemon, banana, grape]{name=martin, gender=male}
7.List filter
List<String> fruits = Lists.newArrayList(null, "apple", "lemon", "melon", "apple", "orange", "grape");
//null 제거
List<String> fruitsExceptNull = Lists.newArrayList(Iterables.filter(fruits, Predicates.notNull()));
//사과는 제거
List<String> frutisExceptApple = Lists.newArrayList(Iterables.filter(fruitsExceptNull,
new Predicate<String>() {
@Override
public boolean apply(@Nullable String s) {
return !"apple".equals(s);
}
}));
for (String fruit : frutisExceptApple) {
System.out.println(fruit);
}
OUTPUT:
lemon
melon
orange
grape
출처: https://warpgate3.tistory.com/entry/자바-Guava-를-이용한-코드-작성 [무명소졸의 웹개발:티스토리]
'JAVA > Library' 카테고리의 다른 글
jaxb IllegalAnnotationExceptions (0) | 2022.01.11 |
---|---|
대용량 엑셀다운로드 SXSSFWorkbook (0) | 2022.01.05 |
[Java Library] Executor Framework (0) | 2021.03.29 |
jackson (주요 어노테이션) (0) | 2021.03.21 |