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

2022. 8. 5. 10:45 JAVA/Library

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