티스토리 뷰

Java

[자바] Guava 를 이용한 코드 작성

§무명소졸§ 2018. 2. 21. 18:04

Google 이란 이름은 무한 신뢰하게 됩니다. ^^;

Guava 는 그러한 Google 에서 만든 오픈소스 라이브러리입니다. (과일을 이야기 하는 것이 아닙니다.ㅎㅎ)

가독성 있는 코드를 작성하기 위한 많은 유틸 클래스를 제공합니다.

이하 Guava 를 이용한 간단한 샘플 코드입니다. 추후 계속 업데이트할 예정입니다.


Test Guava Version
1
2
3
4
5
<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>12.0.1</version>
</dependency>
cs

1.문자열 length 기준으로 split 하기

1
2
3
4
5
6
7
8
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());
}
cs

OUTPUT:

사과
딸기
레몬
포도



2.Literal list & Sort 

1
2
3
4
5
6
7
8
9
List<Integer> number = Lists.newArrayList(1841059 ,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);
cs

OUTPUT:

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]



3.Grouping 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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;
    }
}
cs

OUTPUT:

[Tom:개발팀, Sara:개발팀]



4.String Joining

1
2
3
4
5
 public static void main(String[] args) {
        List<String> fruitList = Lists.newArrayList("딸기","사과","바나나","키위","수박");
        String joinResult = Joiner.on(",").join(fruitList);
        System.out.println(joinResult);
    }
cs

OUTPUT:

[딸기,사과,바나나,키위,수박]



5.Readable Range

1
2
3
4
5
6
7
Range<Integer> range = Ranges.closed(110); //open 은 등호 제외 1 < x < 10
 
int target = 3;
 
if (range.contains(target)) { // if (target >= 1 && target <= 10)
  System.out.println("1 ~ 10 범위");
}
cs

OUTPUT:

1 ~ 10 범위



6.Collection literal

1
2
3
4
5
6
7
8
9
10
11
12
13
14
          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<StringString> 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");
        */
cs

OUTPUT:

[apple, lemon, banana, grape]

[apple, lemon, banana, grape]

{name=martin, gender=male}


7.List filter

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
         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);
        }

cs


OUTPUT:

lemon

melon

orange

grape


공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크