fork download
  1. import java.util.*;
  2.  
  3. public class Main {
  4. public static void main(String[] args) {
  5. Kamus kamus = new Kamus();
  6. kamus.tambah("big", new String[] { "large", "great" });
  7. kamus.tambah("big", new String[] { "huge", "fat" });
  8. kamus.tambah("huge", new String[] { "enormous", "gigantic" });
  9.  
  10. System.out.println(Arrays.toString(kamus.ambilSinonim("big")));
  11. System.out.println(Arrays.toString(kamus.ambilSinonim("huge")));
  12. System.out.println(Arrays.toString(kamus.ambilSinonim("gigantic")));
  13. System.out.println(Arrays.toString(kamus.ambilSinonim("colossal")));
  14. }
  15. }
  16.  
  17. class Kamus {
  18. // Asumsi urutan sinonim tidak harus sesuai urutan penambahannya.
  19. // Kalau ingin sesuai urutan saya harus buat HashMap baru yang valuenya
  20. // adalah list of strings dan HashMap yang lama akan saya gunakan
  21. // untuk pengecekan sinonim sebelum menambahkan kata baru ke list
  22. // agar efisien.
  23. private HashMap<String, Set<String>> kamus = new HashMap<>();
  24.  
  25. public void tambah(String kata, String[] sinonim) {
  26. kamus.putIfAbsent(kata, new HashSet<>());
  27. Set<String> sinonimSet = kamus.get(kata);
  28. for (String sinonimKata : sinonim) {
  29. sinonimSet.add(sinonimKata);
  30. kamus.putIfAbsent(sinonimKata, new HashSet<>());
  31. kamus.get(sinonimKata).add(kata);
  32. }
  33. }
  34.  
  35. public String[] ambilSinonim(String kata) {
  36. if (kamus.containsKey(kata)) {
  37. Set<String> sinonimSet = kamus.get(kata);
  38. return sinonimSet.toArray(new String[0]);
  39. } else {
  40. return null;
  41. }
  42. }
  43. }
  44.  
Success #stdin #stdout 0.07s 54576KB
stdin
Standard input is empty
stdout
[large, fat, huge, great]
[big, gigantic, enormous]
[huge]
null