Sobes.tech
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.