66import java .time .format .DateTimeFormatter ;
77import java .time .temporal .ChronoUnit ;
88import java .util .ArrayList ;
9+ import java .util .Collections ;
910import java .util .Comparator ;
1011import java .util .HashMap ;
1112import java .util .List ;
@@ -61,7 +62,7 @@ public WeatherSummary getWeatherSummary(Long id, int date, int hour) {
6162 return WeatherSummary .of (
6263 weather ,
6364 new ArrayList <>(),
64- getRecommendActivity (weather , tideRecords ),
65+ getRecommendActivities (weather , tideRecords ),
6566 tidePercentage
6667 );
6768 }
@@ -100,7 +101,7 @@ public WeatherDetail getWeatherDetail(Long placeId, int date, int hour) {
100101 );
101102 }
102103
103- private Activity getRecommendActivity (Weather weather , List <TideRecord > tideRecords ) {
104+ private List < String > getRecommendActivities (Weather weather , List <TideRecord > tideRecords ) {
104105 Map <Activity , Integer > activityScores = new HashMap <>();
105106
106107 activityScores .put (SNORKELING , calculateSnorkelingScore (weather , tideRecords ));
@@ -109,10 +110,12 @@ private Activity getRecommendActivity(Weather weather, List<TideRecord> tideReco
109110 activityScores .put (KAYAKING_AND_PADDLE_BOARDING , calculateKayakingPaddleBoardingScore (weather , tideRecords ));
110111 activityScores .put (SURFING , calculateSurfingScore (weather , tideRecords ));
111112
113+ int maxScore = Collections .max (activityScores .values ());
114+
112115 return activityScores .entrySet ().stream ()
113- .max ( Map . Entry . comparingByValue () )
114- .orElseThrow (() -> new IllegalStateException ( "No activity scores available" ))
115- .getKey ( );
116+ .filter ( entry -> entry . getValue () == maxScore )
117+ .map ( entry -> entry . getKey (). getValue ( ))
118+ .collect ( Collectors . toList () );
116119 }
117120
118121 // Calculate Point
0 commit comments