[java] 객체 정렬

Seongho·2023년 4월 9일
0

java

목록 보기
3/11

상황

public static class Block {	
        int areaSize, height, weight;
//
        Block(int areaSize, int height, int weight){
            this.areaSize = areaSize;
            this.height = height;
            this.weight = weight;
        }
    }
int n = scanner.nextInt();
List<Block> blocks = new ArrayList<>();     //블록의 객체 리스트
int areaSize, height, weight;
//
for(int i = 0; i < n; i++){
	areaSize = scanner.nextInt();
    height = scanner.nextInt();
    weight = scanner.nextInt();
    blocks.add(new Block(areaSize, height, weight));        //객체 리스트에 추가
}

위와 같이 Block 이라는 클래스가 있는데, 넓이, 높이, 무게를 저장하는 클래스이다.
이 클래스의 객체를 여러개 ArrayList로 입력받아 areaSize를 기준으로 정렬하고자 한다.
이와 같이 객체의 어떤 멤버변수를 기준으로 객체를 정렬하고자 할 때, 어떻게 해야 하는지 알아보자.

Comparator

Comparator<Block> comparator = new Comparator<Block>() {
	@Override
    public int compare(Block o1, Block o2) {
        return o2.areaSize - o1.areaSize;      
    }
};
//
Collections.sort(blocks, comparator);       //정렬

Comparator 인터페이스 구현체를 Collections.sort()나 Arrays.sort()에 추가 인자로 넘기면 새로운 정렬 기준으로 객체를 정렬한다. Compare함수는 두 개의 인자를 받아서 첫번째 인자가 두번째 인자보다 작으면 -1, 같으면 0, 크면 1을 리턴하는데 이는 오름차순 정렬이다. 이 함수를 오버라이딩하여 return 두번째 인자 - 첫번째 인자 로 바꾸면 내림차순 정렬이 된다.

profile
Record What I Learned

0개의 댓글