본문 바로가기
자료 구조/기본 개념

[자료 구조] 9. List 인터페이스 활용 : 영화 평점 관리 시스템 예제 만들기

글: Song hyun 2024. 5. 9.
728x90
반응형

[자료 구조] 9. List 인터페이스 활용 : 영화 평점 관리 시스템 예제 만들기

상황 설명
: 사용자가 영화에 평점을 주고, 평점에 따라 영화 추천 목록을 관리하는 시스템입니다.
사용자는 영화에 1부터 5까지의 평점을 줄 수 있으며, 평점이 높은 영화부터 낮은 순으로 정렬하여 보여줍니다

package Structure.ch05;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

public class MovieRatingSystem {
	
	public static void main(String[] args) {
		// Movie Object 계속 추가하는 자료 구조
		ArrayList<Movie> movies = new ArrayList<Movie>();
		movies.add(new Movie("범죄도시 4",2));
		movies.add(new Movie("기생충",4));
		movies.add(new Movie("택시 드라이버",3));
		movies.add(new Movie("인턴",5));
		
		// for-each 구문 사용
		System.out.println(movies);
		for (Movie movie : movies) {
			System.out.println(movie.getTitle());
		}
		
		for(int i=0; i<movies.size(); i++) {
			System.out.println(movies.get(i).getTitle());
		}
		
		// 어떤 데이터를 정렬을 하려면 정렬 알고리즘을 구현해서
		// 만들어주면 된다.
		// like 버블 정렬, 퀵 정렬 ...
		
		Collections.sort(movies,new Comparator<Movie>() {
			@Override
			public int compare(Movie m1, Movie m2) {
				// TODO Auto-generated method stub
				return Integer.compare(m2.getRating(), m1.getRating());
			}
		});
		System.out.println("---------------");
		for(Movie movie : movies) {
			System.out.println(movie);
		}
		
		
	} // end of main

} // end of class

class Movie {
	private String title; // 영화의 제목 
	private int rating; // 영화의 평점
	
	// 사용자 정의 생성자 (이름, 평점 입력)
	public Movie(String title, int rating) {
		this.title = title;
		this.rating = rating;
	}

	// toString 오버라이딩
	@Override
	public String toString() {
		return "Movie [title=" + title + ", rating=" + rating + "]";
	}

	// getter 메서드 생성 (이름, 평점)
	public String getTitle() {
		return title;
	}

	public int getRating() {
		return rating;
	}
	
}
728x90
반응형