Collections.sort()

2022. 2. 23. 17:51·Programming/Java

오름차순/ 내림차순/ 대소문자 구분 없이 정렬

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
public class SortArrayList {
public static void main(String[] args) {
// ArrayList 준비
ArrayList<String> list = new ArrayList<>(Arrays.asList("C", "A", "B", "a"));
System.out.println("원본 : " + list); // [C, A, B, a]
// 오름차순으로 정렬
Collections.sort(list);
System.out.println("오름차순 : " + list); // [A, B, C, a]
// 내림차순으로 정렬
Collections.sort(list, Collections.reverseOrder());
System.out.println("내림차순 : " + list); // [a, C, B, A]
// 대소문자 구분없이 오름차순
Collections.sort(list, String.CASE_INSENSITIVE_ORDER);
System.out.println("대소문자 구분없이 오름차순 : " + list); // [a, A, B, C]
// 대소문자 구분없이 내림차순
Collections.sort(list, Collections.reverseOrder(String.CASE_INSENSITIVE_ORDER));
System.out.println("대소문자 구분없이 내림차순 : " + list); // [C, B, a, A]
}
}

//출처: https://hianna.tistory.com/569 [어제 오늘 내일]

 

사용자 정의

1. Comparable

2. Comparator

 

Comparable

- 객체의 정렬 방식 정의

- 정렬할 객체가 Comparable interface를 구현

- 자기 자신과 매개변수를 비교

-  compareTo 메소드를 반드시 구현

class Fruit implements Comparable<Fruit> {
private String name;
private int price;
public Fruit(String name, int price) {
this.name = name;
this.price = price;
}
@Override
public int compareTo(Fruit fruit) {
if (fruit.price < price) {
return 1;
} else if (fruit.price > price) {
return -1;
}
return 0;
}
@Override
public String toString() {
return "[ " + this.name + ": " + this.price + " ]";
}
}

//출처: https://hianna.tistory.com/569 [어제 오늘 내일]

 

Comparator

- Custom Comparator

- Collection.sort() 또는 List.sort() 메소드의 파라미터로 전달

- 두 매개변수 객체를 비교

- compare 메소드를 반드시 구현

Collections.sort(list, new Comparator<Student>() {
            @Override
            public int compare(Student s1, Student s2) {
                if (s1.getScore() < s2.getScore()) {
                    return -1;
                } else if (s1.getScore() > s2.getScore()) {
                    return 1;
                }
                return 0;
            }
        });


//출처: https://includestdio.tistory.com/35 [includestdio]

 

오름차순

- 첫번 째 파라미터(또는 자신<- Comparable의 compareTo()에 해당) < 두번 째 파라미터, 리턴 -1 

- 첫번 째 파라미터(또는 자신<- Comparable의 compareTo()에 해당) > 두번 째 파라미터, 리턴 1

- 첫번 째 파라미터(또는 자신<- Comparable의 compareTo()에 해당) == 두번 째 파라미터, 리턴 0

 

내림차순

오름차순에서 부등호 반대

'Programming > Java' 카테고리의 다른 글

업캐스팅, 다운캐스팅  (0) 2022.02.23
ArrayList vs LinkedList  (0) 2022.02.23
Wildcard <?>  (0) 2022.02.22
Generic Method (Basic)  (0) 2022.02.22
Generic Class (Basic)  (0) 2022.02.22
'Programming/Java' 카테고리의 다른 글
  • 업캐스팅, 다운캐스팅
  • ArrayList vs LinkedList
  • Wildcard <?>
  • Generic Method (Basic)
사랑우주인
사랑우주인
  • 사랑우주인
    lovelyAlien
    사랑우주인
  • 전체
    오늘
    어제
  • 글쓰기
    관리
    • 분류 전체보기 (207)
      • Programming (4)
        • Spring (28)
        • Java (46)
        • JPA (2)
        • 디자인 패턴 (5)
        • 개발&아키텍처 (0)
      • Network (12)
      • OS (19)
      • Database (1)
      • Kubernetes (0)
      • Kafka (2)
      • Algorithm (49)
        • BaekJoon (1)
        • Programmers (19)
        • Algorithm (5)
        • Socar (2)
        • LeetCode (19)
      • Interview (2)
      • Issues (2)
      • DotJoin (1)
      • Git (4)
      • 독서 (3)
      • 끄적끄적 (1)
      • 외부활동 (26)
        • 항해플러스 (2)
        • JSCODE 네트워크 (19)
        • JSCODE 자바 (5)
      • SQL (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • GitHub
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    minimum number of arrows to burst balloons
    fcfs
    rotting oranges
    LinkedList
    OS
    Generic
    Thread
    AuthenticationSuccessHandler
    @JsonNaming
    제네릭
    Process
    디자인 패턴
    JSCode
    clone graph
    wildcards
    algorithm
    BFS
    runner 기법
    lower bounded wildcards
    트랜잭션
    pacific atlantic water flow
    추상화 클래스
    Reorder List
    운영체제
    socar
    준영속 엔티티
    Oauth2
    RR
    Climbing Stairs
    @JsonProperty
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.1
사랑우주인
Collections.sort()

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.