fork download
  1. import java.util.*;
  2.  
  3. public class Main {
  4. public static class Klasemen {
  5. private static final int POIN_MENANG = 3;
  6. private static final int POIN_SERI = 1;
  7. private Map<String, Integer> klasemen;
  8.  
  9. public Klasemen(List<String> clubs) {
  10. klasemen = new HashMap<>();
  11. for (String club : clubs) {
  12. klasemen.put(club, 0);
  13. }
  14. }
  15.  
  16. public void catatPermainan(String klubKandang, String klubTandang, String skor) {
  17. String[] splitSkor = skor.split(":");
  18. int skorKandang = Integer.parseInt(splitSkor[0]);
  19. int skorTandang = Integer.parseInt(splitSkor[1]);
  20.  
  21. if (skorKandang > skorTandang) {
  22. klasemen.put(klubKandang, klasemen.get(klubKandang) + POIN_MENANG);
  23. } else if (skorKandang < skorTandang) {
  24. klasemen.put(klubTandang, klasemen.get(klubTandang) + POIN_MENANG);
  25. } else {
  26. klasemen.put(klubKandang, klasemen.get(klubKandang) + POIN_SERI);
  27. klasemen.put(klubTandang, klasemen.get(klubTandang) + POIN_SERI);
  28. }
  29. }
  30.  
  31. public List<Map.Entry<String, Integer>> cetakKlasemen() {
  32. List<Map.Entry<String, Integer>> sorted = new ArrayList<>(klasemen.entrySet());
  33. sorted.sort((a, b) -> {
  34. int comparison = Integer.compare(b.getValue(), a.getValue());
  35. return (comparison != 0) ? comparison : a.getKey().compareTo(b.getKey());
  36. });
  37. return sorted;
  38. }
  39.  
  40. public String ambilPeringkat(int nomorPeringkat) {
  41. List<Map.Entry<String, Integer>> sorted = cetakKlasemen();
  42. if (nomorPeringkat < 1 || nomorPeringkat > sorted.size()) {
  43. return null;
  44. }
  45. return sorted.get(nomorPeringkat - 1).getKey();
  46. }
  47. }
  48.  
  49. public static void main(String[] args) {
  50. List<String> clubs = Arrays.asList("Liverpool", "Chelsea", "Arsenal");
  51. Klasemen klasemen = new Klasemen(clubs);
  52.  
  53. klasemen.catatPermainan("Arsenal", "Liverpool", "2:1");
  54. klasemen.catatPermainan("Arsenal", "Chelsea", "1:1");
  55. klasemen.catatPermainan("Chelsea", "Arsenal", "0:3");
  56. klasemen.catatPermainan("Chelsea", "Liverpool", "3:2");
  57. klasemen.catatPermainan("Liverpool", "Arsenal", "2:2");
  58. klasemen.catatPermainan("Liverpool", "Chelsea", "0:0");
  59.  
  60. // print klasemen
  61. for (Map.Entry<String, Integer> entry : klasemen.cetakKlasemen()) {
  62. System.out.println(entry.getKey() + " => " + entry.getValue());
  63. }
  64.  
  65. // print klub pada peringkat 2
  66. System.out.println("Peringkat 2: " + klasemen.ambilPeringkat(2));
  67. }
  68. }
  69.  
Success #stdin #stdout 0.17s 55940KB
stdin
Standard input is empty
stdout
Arsenal => 8
Chelsea => 5
Liverpool => 2
Peringkat 2: Chelsea