рдореИрдВ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рдХрд░рддрд╛ рд╣реВрдВ, рд╣реЗрдмреНрд░рд┐рдЯрд╛рдЪреЗрдЯреЗрд▓реА!
рдореИрдВ рдЬрд╛рд╡рд╛ рдореЗрдВ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реВрдВред рдкрд┐рдЫрд▓реЗ рдПрдкрд┐рд╕реЛрдб рдореЗрдВ, рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА
ArrayList рдФрд░
LinkedList рдХреЗ рд╕рд╛рде рдЦреБрдж рдХреЛ рдкрд░рд┐рдЪрд┐рдд рдХрд░ рдЪреБрдХреЗ рд╣реИрдВ, рдЖрдЬ рд╣рдо рдЬрд╢рдкрд╕реНрдЯ рдХреЛ рджреЗрдЦреЗрдВрдЧреЗред
рд╣реИрд╢рдкреИрдб - рд╣реИрд╢ рдЯреЗрдмрд▓ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдореИрдк рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ (рдЬреЛ рдХреБрдВрдЬреА / рдорд╛рди рдЬреЛрдбрд╝реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХрд╛ рдЕрд░реНрде рд╣реИ)ред рдХреБрдВрдЬреА рдФрд░ рдорд╛рди рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдЕрд╢рдХреНрдд рднреА рд╢рд╛рдорд┐рд▓ рд╣реИред рдпрд╣ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рдордп рдХреЗ рд╕рд╛рде рддрддреНрд╡реЛрдВ рдХреЗ рдЖрджреЗрд╢ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЧрд╛рд░рдВрдЯреА рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЯрдХрд░рд╛рд╡ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЪрд╛рдЗрдирд┐рдВрдЧ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИредрд╡рд╕реНрддреБ рдирд┐рд░реНрдорд╛рдг
Map<String, String> hashmap = new HashMap<String, String>();
Footprint{Objects=2, References=20, Primitives=[int x 3, float]}
Object size: 120 bytes
рдирд╡-рдирд┐рд░реНрдорд┐рдд рд╣реИрд╢рдореИрдк рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдХрдИ рдЧреБрдг рд╣реЛрддреЗ рд╣реИрдВ:
- рддрд╛рд▓рд┐рдХрд╛ - рдкреНрд░рдХрд╛рд░ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреА рдПрдХ рд╕рд░рдгреА [] , рдЬреЛ рдореВрд▓реНрдпреЛрдВ рдХреА рд╕реВрдЪрд┐рдпреЛрдВ (рдЬрдВрдЬреАрд░реЛрдВ) рдХреЗ рд▓рд┐рдВрдХ рдХрд╛ рднрдВрдбрд╛рд░ рд╣реИ;
- loadFactor - рднрд╛рд░ рдХрд╛рд░рдХред 0.75 рдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдПрдХреНрд╕реЗрд╕ рд╕рдордп рдФрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдбреЗрдЯрд╛ рдХреА рдорд╛рддреНрд░рд╛ рдХреЗ рдмреАрдЪ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдордЭреМрддрд╛ рд╣реИ;
- рджрд╣рд▓реАрдЬ - рдЬрд┐рди рддрддреНрд╡реЛрдВ рдХреА рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ рд╣реИрд╢ рддрд╛рд▓рд┐рдХрд╛ рджреЛрдЧреБрдиреА рд╣реИред рдпрд╣ рд╕реВрддреНрд░ (рдХреНрд╖рдорддрд╛ * loadFactor) рджреНрд╡рд╛рд░рд╛ рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ;
- рдЖрдХрд╛рд░ - рд╣рд╛рд╢рдк рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛;
рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ, рдЙрддреНрддреАрд░реНрдг рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рд╡реИрдзрддрд╛ рдХреА рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИ рдФрд░ рдореВрд▓реНрдп рд╡рд░реНрдЧ рдХреЗ рд╕рдВрдЧрдд рдЧреБрдгреЛрдВ рдореЗрдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдПрдХ рд╢рдмреНрдж рдореЗрдВ, рдХреБрдЫ рднреА рдЕрд╕рд╛рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИред

рдЖрдк
HashMap (рдХреНрд╖рдорддрд╛) рдФрд░
HashMap (рдХреНрд╖рдорддрд╛, loadFactor) рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреА рдХреНрд╖рдорддрд╛ рдФрд░ рд▓реЛрдб рдХрд╛рд░рдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдЕрдзрд┐рдХрддрдо рдХреНрд╖рдорддрд╛
рдЗрдВрдЯ (1073741824) рдХрд╛ рдЕрдзрд┐рдХрддрдо рдореВрд▓реНрдп рдЖрдзрд╛ рд╣реИред
рдЖрдЗрдЯрдо рдЬреЛрдбрд╝рдирд╛
hashmap.put("0", "zero");
Footprint{Objects=7, References=25, Primitives=[int x 10, char x 5, float]}
Object size: 232 bytes
рдХрд┐рд╕реА рдЖрдЗрдЯрдо рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╕рдордп, рдЪрд░рдгреЛрдВ рдХрд╛ рдХреНрд░рдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
- рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдХреБрдВрдЬреА рдирд▓ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХреА рд╣реИред рдпрджрд┐ рдпрд╣ рдЬрд╛рдВрдЪ рд╕рд╣реА рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ putForNullKey (рдорд╛рди) рд╡рд┐рдзрд┐ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ ( рд╣рдо рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж рд╢реВрдиреНрдп рдХреБрдВрдЬреА рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд╡рд┐рдХрд▓реНрдк рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ)ред
- рдЗрд╕рдХреЗ рдмрд╛рдж, рдПрдХ рдХреБрдВрдЬреА-рдЖрдзрд╛рд░рд┐рдд рд╣реИрд╢ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИред рдкреАрдврд╝реА рдХреЗ рд▓рд┐рдП, рд╣реИрд╢ (рд╣реИрд╢рдХреЛрдб) рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ key.hashCode () рдкрд╛рд╕ рд╣реЛрддрд╛ рд╣реИ ред
static int hash(int h) { h ^= (h >>> 20) ^ (h >>> 12); return h ^ (h >>> 7) ^ (h >>> 4); }
рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдмрддрд╛рддреА рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдкрд░рд┐рдгрд╛рдо рдХреА рдЙрдореНрдореАрдж рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП - рд╣реИрд╢ (рдХреБрдВрдЬреА) рд╡рд┐рдзрд┐ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рдкреНрд░рд╛рдкреНрдд рд╣реИрд╢ рдХреЛрдб рдореЗрдВ рдХреЗрд╡рд▓ рд╕реАрдорд┐рдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЯрдХрд░рд╛рд╡ рд╣реЛрдВрдЧреЗ (рд▓рдЧрднрдЧ 8, рд▓реЛрдб рдХрд╛рд░рдХ рдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде)ред
рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, '`0' рдХреЗ рдорд╛рди рдХреЗ рд╕рд╛рде рдПрдХ рдХреБрдВрдЬреА рдХреЗ рд▓рд┐рдП , рд╣реИрд╢рдХреЛрдб () рд╡рд┐рдзрд┐ 48 рд▓реМрдЯрд╛, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк:
h ^ (h >>> 20) ^ (h >>> 12) = 48 h ^ (h >>> 7) ^ (h >>> 4) = 51
- рдЗрдВрдбреЗрдХреНрд╕рдлреЛрд░ (рд╣реИрд╢, рдЯреЗрдмрд▓ рд▓реИрдВрде) рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ , рдПрд░реЗ рдореЗрдВ рд╡рд╣ рд╕реНрдерд╛рди рдЬрд╣рд╛рдВ рддрддреНрд╡ рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛, рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
static int indexFor(int h, int length) { return h & (length - 1); }
51 рдХреЗ рд╣реИрд╢ рдорд╛рди рдФрд░ 16 рдХреЗ рдПрдХ рдЯреЗрдмрд▓ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде, рд╣рдо рд╕рд░рдгреА рдореЗрдВ рд╕реВрдЪрдХрд╛рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:
h & (length - 1) = 3
- рдЕрдм, рд╕рд░рдгреА рдореЗрдВ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЛ рдЬрд╛рдирдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдЗрд╕ рд╕реЗрд▓ рд╕реЗ рдЬреБрдбрд╝реЗ рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА (рд╢реНрд░реГрдВрдЦрд▓рд╛) рдорд┐рд▓рддреА рд╣реИред рдирдП рддрддреНрд╡ рдХреЗ рд╣реИрд╢ рдФрд░ рдХреБрдВрдЬреА рдХреА рддреБрд▓рдирд╛ рд╕реВрдЪреА рд╕реЗ рддрддреНрд╡реЛрдВ рдХреА рд╣реИрд╢ рдФрд░ рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдПрдХ-рдПрдХ рдХрд░рдХреЗ рдХреА рдЬрд╛рддреА рд╣реИ рдФрд░, рдпрджрд┐ рдпреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВ, рддреЛ рддрддреНрд╡ рдХрд╛ рдорд╛рди рдУрд╡рд░рд░рд╛рдЗрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
if (e.hash == hash && (e.key == key || key.equals(e.key))) { V oldValue = e.value; e.value = value; return oldValue; }
- рдпрджрд┐ рдкрд┐рдЫрд▓реЗ рдЪрд░рдг рдореЗрдВ рдХреЛрдИ рдорд┐рд▓рд╛рди рдирд╣реАрдВ рдорд┐рд▓рд╛, рддреЛ рдПрдХ рдирдпрд╛ рддрддреНрд╡ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП addEntry (рд╣реИрд╢, рдХреА, рд╡реИрд▓реНрдпреВ, рдЗрдВрдбреЗрдХреНрд╕) рд╡рд┐рдзрд┐ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
void addEntry(int hash, K key, V value, int index) { Entry<K, V> e = table[index]; table[index] = new Entry<K, V>(hash, key, value, e); ... }

рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╣рд╛рд╢рдк рдХреИрд╕реЗ рднрд░рддрд╛ рд╣реИ, рд╣рдо рдХреБрдЫ рдФрд░ рддрддреНрд╡ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред
hashmap.put("key", "one");
Footprint{Objects=12, References=30, Primitives=[int x 17, char x 11, float]}
Object size: 352 bytes
- рдЫреЛрдбрд╝ рджрд┐рдпрд╛, рдХреБрдВрдЬреА рд╢реВрдиреНрдп рдирд╣реАрдВ рд╣реИ
- '' рдХреА ''ред рд╣реИрд╢рдХреЛрдб () = 106079
h ^ (h >>> 20) ^ (h >>> 12) = 106054 h ^ (h >>> 7) ^ (h >>> 4) = 99486
- рдПрдХ рд╕рд░рдгреА рдореЗрдВ рд╕реНрдерд┐рддрд┐ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛
h & (length - 1) = 14
- рдХреЛрдИ рд╕рдорд╛рди рдЖрдЗрдЯрдо рдирд╣реАрдВ рдорд┐рд▓рд╛
- рдЖрдЗрдЯрдо рдЬреЛрдбрд╝реЗрдВ

hashmap.put(null, null);
Footprint{Objects=13, References=33, Primitives=[int x 18, char x 11, float]}
Object size: 376 bytes
рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрджрд┐ рдХрд┐рд╕реА рдЖрдЗрдЯрдо рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╕рдордп рдирд▓ рдХреЛ рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдХреНрд░рд┐рдпрд╛рдПрдВ рдЕрд▓рдЧ рд╣реЛрдВрдЧреАред
PutForNullKey (рдорд╛рди) рд╡рд┐рдзрд┐ рдХреЛ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕рдХреЗ рдЕрдВрджрд░
рд╣реИрд╢ () рдФрд░
рдЗрдВрдбреЗрдХреНрд╕рдлрд╝реЛрд░ () рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдХреЙрд▓ рдирд╣реАрдВ рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рдЕрд╢рдХреНрдд рдХреБрдВрдЬрд┐рдпреЛрдВ рд╡рд╛рд▓реЗ рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЛ рд╣рдореЗрд╢рд╛
рддрд╛рд▓рд┐рдХрд╛ [0] рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ), рд▓реЗрдХрд┐рди рдРрд╕реА рдХреНрд░рд┐рдпрд╛рдПрдВ рд╣реИрдВ:
- рддрд╛рд▓рд┐рдХрд╛ [0] рд╕реЗ рдмрдВрдзреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЛ рдирд▓ рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдПрдХ рддрддреНрд╡ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рдЦреЛрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдРрд╕рд╛ рдХреЛрдИ рддрддреНрд╡ рдореМрдЬреВрдж рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдорд╛рди рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рд╣реИред
- рдпрджрд┐ рдирд▓ рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рддрддреНрд╡ рдирд╣реАрдВ рдорд┐рд▓рд╛, рддреЛ рдкрд░рд┐рдЪрд┐рдд addEntry () рд╡рд┐рдзрд┐ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред
addEntry(0, null, value, 0);

hashmap.put("idx", "two");
Footprint{Objects=18, References=38, Primitives=[int x 25, char x 17, float]}
Object size: 496 bytes
рдЕрдм рдорд╛рдорд▓реЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬрдм рдХреЛрдИ рддрддреНрд╡ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдЯрдХрд░рд╛рд╡ рд╣реЛрддрд╛ рд╣реИред
- рдЫреЛрдбрд╝ рджрд┐рдпрд╛, рдХреБрдВрдЬреА рд╢реВрдиреНрдп рдирд╣реАрдВ рд╣реИ
- '' рдЖрдИрдбреАрдПрдХреНрд╕ ''ред рд╣реИрд╢рдХреЛрдб () = 104125
h ^ (h >>> 20) ^ (h >>> 12) = 104100 h ^ (h >>> 7) ^ (h >>> 4) = 101603
- рдПрдХ рд╕рд░рдгреА рдореЗрдВ рд╕реНрдерд┐рддрд┐ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛
h & (length - 1) = 3
- рдХреЛрдИ рд╕рдорд╛рди рдЖрдЗрдЯрдо рдирд╣реАрдВ рдорд┐рд▓рд╛
- рдЖрдЗрдЯрдо рдЬреЛрдбрд╝реЗрдВ

рдЖрдХрд╛рд░ рдмрджрд▓реЗрдВ рдФрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ
рдЬрдм
рддрд╛рд▓рд┐рдХрд╛ [] рд╕рд░рдгреА рдХреЛ рд╕реАрдорд╛ рдорд╛рди рд╕реЗ рднрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдЖрдХрд╛рд░ рджреЛрдЧреБрдирд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рддрддреНрд╡реЛрдВ рдХрд╛ рдкреБрдирд░реНрд╡рд┐рддрд░рдг рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рд▓рд┐рдП рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ,
рдЖрдХрд╛рд░ (рдХреНрд╖рдорддрд╛) рдФрд░
рд╕реНрдерд╛рдирд╛рдВрддрд░рдг (newTable) рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИред
void resize(int newCapacity) { if (table.length == MAXIMUM_CAPACITY) { threshold = Integer.MAX_VALUE; return; } Entry[] newTable = new Entry[newCapacity]; transfer(newTable); table = newTable; threshold = (int)(newCapacity * loadFactor); }
рд╡рд░реНрддрдорд╛рди рд╕рдВрдЧреНрд░рд╣рдг рдХреЗ рд╕рднреА рддрддреНрд╡реЛрдВ рдкрд░
рд╕реНрдерд╛рдирд╛рдВрддрд░рдг () рд╡рд┐рдзрд┐ рдкреБрди: рдкреНрд░рд╕рд╛рд░рд┐рдд рд╣реЛрддреА рд╣реИ, рдЕрдкрдиреЗ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ (рдирдП рдЖрдХрд╛рд░ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП) рдХреЛ рдкреБрди: рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рддреА рд╣реИ рдФрд░ рдирдП рд╕рд░рдгреА рдореЗрдВ рддрддреНрд╡реЛрдВ рдХрд╛ рдкреБрдирд░реНрд╡рд┐рддрд░рдг рдХрд░рддреА рд╣реИред
рдпрджрд┐
рд╣рдо рдХрд╣рддреЗ рд╣реИрдВ, рдПрдХ рдФрд░ 15 рддрддреНрд╡реЛрдВ рдХреЛ рдореВрд▓
рд╣реИрд╢рдореИрдк рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЖрдХрд╛рд░ рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╣реЛрдЧреА рдФрд░ рддрддреНрд╡реЛрдВ рдХрд╛ рд╡рд┐рддрд░рдг рдмрджрд▓ рдЬрд╛рдПрдЧрд╛ред

рдЖрдЗрдЯрдо рд╣рдЯрд╛рдПрдВ
HashMap рдХреЗ рдкрд╛рд╕ ArrayList рдХреЗ рд╕рдорд╛рди "рд╕рдорд╕реНрдпрд╛" рд╣реИ - рддрддреНрд╡реЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдкрд░,
рддрд╛рд▓рд┐рдХрд╛ [] рд╕рд░рдгреА рдХрд╛ рдЖрдХрд╛рд░ рдХрдо рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдФрд░ рдЕрдЧрд░ ArrayList рдореЗрдВ
trimToSize () рд╡рд┐рдзрд┐ рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ HashMap рдореЗрдВ рдРрд╕реА рдХреЛрдИ рд╡рд┐рдзрд┐рдпрд╛рдБ рдирд╣реАрдВ рд╣реИрдВ (рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореЗрд░реЗ рдПрдХ рд╕рд╣рдпреЛрдЧреА рдиреЗ рдХрд╣рд╛, "
рд╢рд╛рдпрдж рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ? ")ред
рдКрдкрд░ рдЬреЛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдЙрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ рдкрд░реАрдХреНрд╖рдгред рд╕реНрд░реЛрдд рд╡рд╕реНрддреБ 496 рдмрд╛рдЗрдЯреНрд╕ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 150 рддрддреНрд╡ рдЬреЛрдбрд╝реЗрдВред
Footprint{Objects=768, References=1028, Primitives=[int x 1075, char x 2201, float]}
Object size: 21064 bytes
рдЕрдм рд╕рдорд╛рди 150 рддрддреНрд╡реЛрдВ рдХреЛ рд╣рдЯрд╛рдПрдВ, рдФрд░ рдлрд┐рд░ рд╕реЗ рдорд╛рдкреЗрдВред
Footprint{Objects=18, References=278, Primitives=[int x 25, char x 17, float]}
Object size: 1456 bytes
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдХрд╛рд░ рдЕрдкрдиреЗ рдореВрд▓ рдЖрдХрд╛рд░ рдХреЗ рдХрд░реАрдм рднреА рдирд╣реАрдВ рдерд╛ред рдпрджрд┐ рд╕реНрдерд┐рддрд┐ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ / рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
HashMap (рдореИрдк) рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
hashmap = new HashMap<String, String>(hashmap);
Footprint{Objects=18, References=38, Primitives=[int x 25, char x 17, float]}
Object size: 496 bytes
iterators
рд╣реИрд╢рдкреЙрдк рдореЗрдВ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд
рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпрд╛рдВ рд╣реИрдВ , рдЬреИрд╕реЗ рдХрд┐ рдЖрдк рд╕рднреА рдХреБрдВрдЬреА
рдХреАрд╕реЗрдЯ () , рд╕рднреА
рдорд╛рди () рдпрд╛ рд╕рднреА рдХреБрдВрдЬреА / рдорд╛рди
рдЬреЛрдбрд╝реЗ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред рдиреАрдЪреЗ рддрддреНрд╡реЛрдВ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╡рд┐рдХрд▓реНрдк рджрд┐рдП рдЧрдП рд╣реИрдВ:
рдпрд╣ рдпрд╛рдж рд░рдЦрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдЕрдЧрд░ рдЗрдЯрд░реЗрдЯрд░ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рджреМрд░рд╛рди рд╣рд╛рд╢рдк рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЗрдЯрд░реЗрдЯрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛), рддреЛ рддрддреНрд╡реЛрдВ рдХреЛ рдорд╛рдирдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╣реЛрдЧрд╛ред
рдкрд░рд┐рдгрд╛рдо
- рдПрдХ рддрддреНрд╡ рдЬреЛрдбрд╝рдирд╛ рдУ (1) рд╕рдордп рдХреЗ рджреМрд░рд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдирдП рддрддреНрд╡реЛрдВ рдХреЛ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдбрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ;
- рдХрд┐рд╕реА рддрддреНрд╡ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп O (1) рд╕рдордп рдХреЗ рджреМрд░рд╛рди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рд╣реИрд╢ рдлрд╝рдВрдХреНрд╢рди рд╕рдорд╛рди рд░реВрдк рд╕реЗ рддрддреНрд╡реЛрдВ рдХреЛ рд╡рд┐рддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреЛрдИ рдЯрдХрд░рд╛рд╡ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдФрд╕рдд рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рдордп ╬Ш (1 + ╬▒) рд╣реЛрдЧрд╛, рдЬрд╣рд╛рдВ ╬▒ рд▓реЛрдб рдлреИрдХреНрдЯрд░ рд╣реИред рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд░рдирдЯрд╛рдЗрдо worst (n) рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдПрдХ рд╣реА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд╕рднреА рддрддреНрд╡);
- рдХреБрдВрдЬреА рдФрд░ рдорд╛рди рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдЕрд╢рдХреНрдд рднреА рд╢рд╛рдорд┐рд▓ рд╣реИред рдЖрджрд┐рдо рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдВрдмрдВрдзрд┐рдд рдЖрд╡рд░рдг рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ;
- рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдирд╣реАрдВред
рд╕рдВрджрд░реНрдн
HashMap рд╕реНрд░реЛрддJDK7 рд╕реЗ
HashMap рд╕реНрд░реЛрдд
JDK рдХреЗ рд╕реНрд░реЛрдд
OpenJDK рдФрд░ рд╡реНрдпрд╛рдкрд╛рд░ 6 рд╕реНрд░реЛрдд рд░рд┐рд▓реАрдЬрд╝ - рдмрд┐рд▓реНрдб b23рдорд╛рдк рдЙрдкрдХрд░рдг -
рд╕реНрдореГрддрд┐-рдорд╛рдкрдХ рдФрд░
рдЕрдорд░реВрдж (Google рдХреЛрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп)ред