Untitled

 avatar
unknown
java
2 years ago
1.6 kB
6
Indexable
public static List<Map.Entry<String, Double>> findTopEconomicalBowlers(List<Match_Data> matches, List<Delivery_Data> deliveries) {
    Map<String, Double> topEconomyOfBowlers = new HashMap<>();
    Map<String, Integer> runsConcededPerBowler = new HashMap<>();
    Map<String, Integer> ballsPerBowler = new HashMap<>();

    for (Delivery_Data delivery : deliveries) {
        if (isDeliveryIn2015(matches, delivery.getMatch_id())) {
            int balls = ballsPerBowler.getOrDefault(delivery.getBowler(), 0) + 1;
            ballsPerBowler.put(delivery.getBowler(), balls);

            int runs = runsConcededPerBowler.getOrDefault(delivery.getBowler(), 0) + Integer.parseInt(delivery.getTotal_runs());
            runsConcededPerBowler.put(delivery.getBowler(), runs);
        }
    }

    for (String bowler : ballsPerBowler.keySet()) {
        int balls = ballsPerBowler.get(bowler);
        int runs = runsConcededPerBowler.get(bowler);
        double oversCount = balls / 6.0;
        double economyRate = runs / oversCount;
        topEconomyOfBowlers.put(bowler, economyRate);
    }

    Set<Map.Entry<String, Double>> entrySet = topEconomyOfBowlers.entrySet();
    List<Map.Entry<String, Double>> sortedList = new ArrayList<>(entrySet);
    sortedList.sort(Map.Entry.comparingByValue());

    return sortedList;
}

private static boolean isDeliveryIn2015(List<Match_Data> matches, String matchId) {
    for (Match_Data match : matches) {
        if (match.getId().equals(matchId) && match.getSeason().equals("2015")) {
            return true;
        }
    }
    return false;
}
Editor is loading...