Junior — Middle
Ar galima objekte naudoti kaip raktą ne eilutės reikšmę?
sobes.tech AI
Atsakymas iš AI
Java (ir, ypač, Android) standartuose objektuose, pavyzdžiui, HashMap, raktas gali būti bet kurios klasės objektas, nebūtinai eilutė. Svarbiausia, kad šis objektas teisingai įgyvendintų equals() ir hashCode() metodus. Pavyzdžiui, galima naudoti Integer, Enum arba savo klases kaip raktus.
Pavyzdys:
Map<Integer, String> map = new HashMap<>();
map.put(1, "vienas");
map.put(2, "du");
String value = map.get(1); // "vienas"
Tačiau, jei naudojate paprastą objektą be equals ir hashCode perrašymo, elgsena gali būti nenuspėjama, nes raktai lyginami pagal šiuos metodus. Skirtingai nuo JavaScript, kur objekto raktai visada konvertuojami į eilutę, Java Map raktai gali būti bet kokie objektai.