Sobes.tech
Junior — Middle

Կարող է օբյեկտում որպես բանալի օգտագործել ոչ տողային արժեք?

sobes.tech AI

Պատասխան AI-ից

Java-յում (և, մասնավորապես, Android-ում) ստանդարտ օբյեկտների՝ օրինակ՝ HashMap-ի, մեջ բանալի կարող է լինել ցանկացած դասի օբյեկտ, ոչ պարտադիր՝ տող։ Կարևորն այն է, որ այդ օբյեկտը ճիշտ իրականացնի equals() և hashCode() մեթոդները։ Օրինակ, կարող եք օգտագործել Integer, Enum կամ սեփական դասեր որպես բանալի։

Օրինակ՝

Map<Integer, String> map = new HashMap<>();
map.put(1, "մեկ");
map.put(2, "երկու");

String value = map.get(1); // "մեկ"

Սակայն, եթե օգտագործեք սովորական օբյեկտ առանց equals և hashCode վերագրելու, վարքագիծը կարող է լինել անսպասելի, քանի որ բանալիները համեմատվում են այդ մեթոդներով։ Բացառություն JavaScript-ից, որտեղ օբյեկտի բանալիները միշտ փոխարկվում են տողին, Java-ում Map-ի բանալիները կարող են լինել ցանկացած օբյեկտ։