새소식

인기 검색어

TL

21/03/09 TL. [Java]Comparable과 Comparator의 차이. String, StringBuilder, StringBuffer 성능 차이 비교.

  • -

오늘 할 일

매일 토익

매일 알고리즘

자료구조, 컴프1, 컴네설, 시네보 수강

DevOps 정리



gmlwjd9405.github.io/2018/09/06/java-comparable-and-comparator.html

 

[Java] Comparable와 Comparator의 차이와 사용법 - Heee's Development Blog

Step by step goes a long way.

gmlwjd9405.github.io

Comparable : 정렬 수행 시 기본적으로 적용되는 정렬 기준이 되는 메서드를 정의하는 인터페이스이다.

정렬할 객체에 Comparable interface를 implements 후, compareTo() 메서드를 오버라이드 한다.

Arrays.sort(array) -> 배열 정렬, Collections.sort(list) -> List Collection로 정렬할 수 있다.

// x좌표가 증가하는 순, x좌표가 같으면 y좌표가 감소하는 순으로 정렬하라.
class Point implements Comparable<Point> {
    int x, y;

    @Override
    public int compareTo(Point p) {
        if(this.x > p.x) {
            return 1; // x에 대해서는 오름차순
        }
        else if(this.x == p.x) {
            if(this.y < p.y) { // y에 대해서는 내림차순
                return 1;
            }
        }
        return -1;
    }
}

// main에서 사용법
List<Point> pointList = new ArrayList<>();
pointList.add(new Point(x, y));
Collections.sort(pointList);
// 출처 : https://gmlwjd9405.github.io/2018/09/06/java-comparable-and-comparator.html

Comparator : 정렬 가능한 클래스들의 기본 정렬 기준과 다르게 정렬하고 싶을 때 사용하는 인터페이스.

Comparator interface를 implements 후 compare() 메서드를 오버라이드한 myComparator class를 작성한다.

주로 내림차순으로 정렬할 때 많이 사용한다.

Arrays.sort(arr, myComparator), Collections.sort(list, myComp) 로 사용할 수 있는데, 두 번째 인자로 Comparator interface를 받을 수 있다.

// x좌표가 증가하는 순, x좌표가 같으면 y좌표가 감소하는 순으로 정렬하라.
class MyComparator implements Comparator<Point> {
  @Override
  public int compare(Point p1, Point p2) {
    if (p1.x > p2.x) {
      return 1; // x에 대해서는 오름차순
    }
    else if (p1.x == p2.x) {
      if (p1.y < p2.y) { // y에 대해서는 내림차순
        return 1;
      }
    }
    return -1;
  }
}

// main에서 사용법
List<Point> pointList = new ArrayList<>();
pointList.add(new Point(x, y));
MyComparator myComparator = new MyComparator();
Collections.sort(pointList, myComparator);
// 출처 : https://gmlwjd9405.github.io/2018/09/06/java-comparable-and-comparator.html
Comparator<Point> myComparator = new Comparator<Point>() {
  @Override
  public int compare(Point p1, Point p2) { 위와 동일 }
};

List<Point> pointList = new ArrayList<>();
pointList.add(new Point(x, y));
Collections.sort(pointList, myComparator);
// 출처 : https://gmlwjd9405.github.io/2018/09/06/java-comparable-and-comparator.html

madplay.github.io/post/difference-between-string-stringbuilder-and-stringbuffer-in-java

 

자바 String, StringBuilder 그리고 StringBuffer 성능 차이 비교

자바에서 String과 StringBuilder 그리고 StringBuffer의 차이는 무엇일까? 그리고 제일 빠른 연산 속도는 어떤 것일까?

madplay.github.io

String은 할당된 메모리 공간이 변하지 않는다. 객체가 참조되는 형식으로 변하는 것이다. 따라서 자원을 많이 사용한다.

StringBuilder(동기화 보장 x), StringBuffer(동기화 보장 o)는 가변적이라 변경되는 객체를 만들 때 더 빠르다. StringBuilder를 권장한다.


 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.