Algorithm/Study

[99클럽 코테 스터디] 📝 Day1. OT

ioh'sDeveloper 2024. 5. 22. 00:19
99클럽 코테 스터디 1일차 TIL + Hash


📍오늘의 학습 키워드

Hash 

📝 공부한 내용 본인의 언어로 정리하기

Comparable 인터페이스는 Java에서 객체의 자연 순서를 정의하기 위해 사용하는 표준 인터페이스입니다.

이 인터페이스를 구현하는 클래스는 compareTo 메서드를 통해 두 객체의 비교 방법을 정의합니다. 이로 인해 해당 클래스의 객체들이 자연스럽게 정렬될 수 있습니다.

* Comparable 인터페이스

Comparable 인터페이스는 java.lang 패키지에 포함되어 있습니다. 이 인터페이스는 단일 메서드 compareTo를 제공합니다.

public interface Comparable<T> {
    public int compareTo(T o);
}

 

이 메서드는 현재 객체와 지정된 객체를 비교하여 다음과 같은 값을 반환해야 합니다:

  • 음수: 현재 객체가 지정된 객체보다 작음
  • 0: 현재 객체가 지정된 객체와 같음
  • 양수: 현재 객체가 지정된 객체보다 큼

예제 코드

다음은 Song 클래스를 Comparable 인터페이스를 사용하여 구현하는 예제입니다.

public class Song implements Comparable<Song> {
    int index;
    int plays;

    public Song(int index, int plays) {
        this.index = index;
        this.plays = plays;
    }

    @Override
    public int compareTo(Song other) {
        if (this.plays == other.plays) {
            return this.index - other.index; // 재생 횟수가 같으면 인덱스 오름차순 정렬
        }
        return other.plays - this.plays; // 재생 횟수가 다르면 재생 횟수 내림차순 정렬
    }
}

위의 코드에서 Song 클래스는 Comparable<Song> 인터페이스를 구현하고 있으며, compareTo 메서드는 plays를 기준으로 내림차순 정렬을 수행하고, 재생 횟수가 같을 경우 index를 기준으로 오름차순 정렬을 수행합니다.

 

* Collections.sort

Collections.sort 메서드는 Java의 Collections 클래스에 정의된 정적 메서드로, 리스트를 정렬할 때 사용됩니다. Comparable 인터페이스를 구현한 객체들의 리스트를 정렬할 때 유용합니다.

List<Song> songs = new ArrayList<>();
songs.add(new Song(0, 500));
songs.add(new Song(1, 600));
songs.add(new Song(2, 150));

Collections.sort(songs); // Song 클래스의 compareTo 메서드 기준으로 정렬

위의 예제에서 Collections.sort(songs) songs 리스트를 Song 클래스의 compareTo 메서드 기준으로 정렬합니다.

요약

  • Comparable 인터페이스는 객체의 자연 순서를 정의하기 위해 사용됩니다. 이는 Java 표준 라이브러리에서 제공하는 인터페이스입니다.
  • compareTo 메서드를 구현하여 객체 간의 비교 방법을 정의합니다.
  • Collections.sort 메서드 Comparable 인터페이스를 구현한 객체들의 리스트를 정렬하는 데 사용됩니다.

따라서, Comparable 인터페이스는 Java 내장 함수가 아닌, Java 표준 라이브러리의 일부분으로서 객체 정렬을 위한 인터페이스입니다.

 

📖 오늘의 회고

📚 어떤 문제가 있었고, 나는 어떤 시도를 했는지

문제풀이를 어떤 방식으로 해결해야하는지 접근 방식에 대해서 고민을 했다.
1. 가장 많이 재생된 노래 찾기
2. 장르별로 분리하고 많이 재생된 순 정렬하고 결과값넣기

🤔 어떻게 해결했는지

🤓 무엇을 새롭게 알았는지

HashMap.getOrDefault: 주어진 키가 존재하면 값을 반환하고, 존재하지 않으면 기본값을 반환하는 메서드. NullPointerException 방지에 유용함

그런데 사람들은 프로그래머스로 뚝딱뚝딱 잘하지 나는 아직 IDE 힘이 피료해,,, 

⏳내일 학습할 것은 무엇인지

아직 없지만 일단 비기너 문제도 풀어보기