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. 장르별로 분리하고 많이 재생된 순 정렬하고 결과값넣기
🤔 어떻게 해결했는지
- 블로그 글 참고 (링크 : https://develop-tracking.tistory.com/47)
🤓 무엇을 새롭게 알았는지
HashMap.getOrDefault: 주어진 키가 존재하면 값을 반환하고, 존재하지 않으면 기본값을 반환하는 메서드. NullPointerException 방지에 유용함
그런데 사람들은 프로그래머스로 뚝딱뚝딱 잘하지 나는 아직 IDE 힘이 피료해,,,
⏳내일 학습할 것은 무엇인지
아직 없지만 일단 비기너 문제도 풀어보기
'알고리즘 & 자료구조 > 스터디 (Algorithm Study)' 카테고리의 다른 글
[99클럽 코테 스터디] 📝 Day6. 꾸준함2 (0) | 2024.05.26 |
---|---|
[99클럽 코테 스터디] 📝 Day5. 꾸준하게 (0) | 2024.05.26 |
[99클럽 코테 스터디] 📝 Day4. 회사… 힘들다.. 하지만.. (1) | 2024.05.23 |
[99클럽 코테 스터디] 📝 Day3. 바쁜 일상속 노력 (0) | 2024.05.23 |
[99클럽 코테 스터디] 📝 Day2. 꾸준함 (1) | 2024.05.22 |