Browse Source

w4-张思渊-202401070104

main
zhangsiyuan 3 weeks ago
parent
commit
664485b141
  1. 42
      project/src/project/analysis/MovieAnalyzer.java

42
project/src/project/analysis/MovieAnalyzer.java

@ -0,0 +1,42 @@
package project.analysis;
import project.bean.Movie;
import java.util.*;
import java.util.stream.Collectors;
public class MovieAnalyzer {
public static Map<Double, Long> getRatingDistribution(List<Movie> movies) {
return movies.stream()
.collect(Collectors.groupingBy(Movie::getRating, Collectors.counting()));
}
public static Map<Integer, Double> getYearRatingCorrelation(List<Movie> movies) {
return movies.stream()
.collect(Collectors.groupingBy(Movie::getYear,
Collectors.averagingDouble(Movie::getRating)));
}
public static Map<String, Long> getDirectorMovieCount(List<Movie> movies) {
return movies.stream()
.collect(Collectors.groupingBy(Movie::getDirector, Collectors.counting()))
.entrySet().stream()
.filter(entry -> entry.getValue() > 1)
.sorted(Map.Entry.<String, Long>comparingByValue().reversed())
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (e1, e2) -> e1, LinkedHashMap::new));
}
public static double getAverageRating(List<Movie> movies) {
return movies.stream()
.mapToDouble(Movie::getRating)
.average()
.orElse(0.0);
}
public static List<Movie> getTopRatedMovies(List<Movie> movies, int count) {
return movies.stream()
.sorted(Comparator.comparingDouble(Movie::getRating).reversed())
.limit(count)
.collect(Collectors.toList());
}
}
Loading…
Cancel
Save