ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ°Ρ…. HashMap

ΠŸΡ€ΠΈΠ²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽ вас, Ρ…Π°Π±Ρ€Π°Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΠΈ!

ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ структуры Π΄Π°Π½Π½Ρ‹Ρ… Π² Java. Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… сСриях ΠΌΡ‹ ΡƒΠΆΠ΅ ознакомились с ArrayList ΠΈ LinkedList, сСгодня ΠΆΠ΅ рассмотрим HashMap.

ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

HashMap β€” основан Π½Π° Ρ…ΡΡˆ-Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ…, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ интСрфСйс Map (Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π² Π²ΠΈΠ΄Π΅ ΠΏΠ°Ρ€ ΠΊΠ»ΡŽΡ‡/Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅). ΠšΠ»ΡŽΡ‡ΠΈ ΠΈ значСния ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ², Π² Ρ‚ΠΎΠΌ числС ΠΈ null. Данная рСализация Π½Π΅ Π΄Π°Π΅Ρ‚ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΉ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ порядка элСмСнтов с Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ осущСствляСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Ρ†Π΅ΠΏΠΎΡ‡Π΅ΠΊ.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°

ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ свои Π΅ΠΌΠΊΠΎΡΡ‚ΡŒ ΠΈ коэффициСнт Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ конструкторы HashMap(capacity) ΠΈ HashMap(capacity, loadFactor). Максимальная Π΅ΠΌΠΊΠΎΡΡ‚ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ смоТСтС ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ, Ρ€Π°Π²Π½Π° ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π΅ максимального значСния int (1073741824).

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ элСмСнтов

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΈΠ· исходников ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚, ΠΊΠ°ΠΊΠΈΡ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² стоит ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ β€” ΠΌΠ΅Ρ‚ΠΎΠ΄ hash(key) Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Ρ…ΡΡˆ-ΠΊΠΎΠ΄Ρ‹, Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ΅ количСство ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ (ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ 8, ΠΏΡ€ΠΈ Π΄Π΅Ρ„ΠΎΠ»Ρ‚Π½ΠΎΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ коэффициСнта Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ).

Π’ ΠΌΠΎΠ΅ΠΌ случаС, для ΠΊΠ»ΡŽΡ‡Π° со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ »0» ΠΌΠ΅Ρ‚ΠΎΠ΄ hashCode() Π²Π΅Ρ€Π½ΡƒΠ» Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 48, Π² ΠΈΡ‚ΠΎΠ³Π΅:

ΠŸΡ€ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ Ρ…ΡΡˆΠ° 51 ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 16, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ индСкс Π² массивС:

ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ заполняСтся HashMap, Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π΅Ρ‰Π΅ нСсколько элСмСнтов.

ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

Footprint
Object size: 376 bytes

ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

Footprint
Object size: 496 bytes

ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

Resize ΠΈ Transfer

Когда массив table[] заполняСтся Π΄ΠΎ ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ значСния, Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ увСличиваСтся Π²Π΄Π²ΠΎΠ΅ ΠΈ происходит пСрСраспрСдСлСниС элСмСнтов. Как Π²Ρ‹ сами ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Π½ΠΈΡ‡Π΅Π³ΠΎ слоТного Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… resize(capacity) ΠΈ transfer(newTable) Π½Π΅Ρ‚.

ΠœΠ΅Ρ‚ΠΎΠ΄ transfer() ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅Ρ‚ всС элСмСнты Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°, пСрСсчитываСт ΠΈΡ… индСксы (с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°) ΠΈ пСрСраспрСдСляСт элСмСнты ΠΏΠΎ Π½ΠΎΠ²ΠΎΠΌΡƒ массиву.

Если Π² исходный hashmap Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ, скаТСм, Π΅Ρ‰Π΅ 15 элСмСнтов, Ρ‚ΠΎ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ ΠΈ распрСдСлСниС элСмСнтов измСнится.

ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнтов

Π£ HashMap Π΅ΡΡ‚ΡŒ такая ΠΆΠ΅ Β«ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Β» ΠΊΠ°ΠΊ ΠΈ Ρƒ ArrayList β€” ΠΏΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ элСмСнтов Ρ€Π°Π·ΠΌΠ΅Ρ€ массива table[] Π½Π΅ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ΡΡ. И Ссли Π² ArrayList прСдусмотрСн ΠΌΠ΅Ρ‚ΠΎΠ΄ trimToSize(), Ρ‚ΠΎ Π² HashMap Ρ‚Π°ΠΊΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π½Π΅Ρ‚ (хотя, ΠΊΠ°ΠΊ сказал ΠΎΠ΄ΠΈΠ½ ΠΌΠΎΠΉ ΠΊΠΎΠ»Π»Π΅Π³Π° β€” «Π ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ½ΠΎ ΠΈ Π½Π΅ Π½Π°Π΄ΠΎ?«).

НСбольшой тСст, для дСмонстрации Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎ написано Π²Ρ‹ΡˆΠ΅. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 496 Π±Π°ΠΉΡ‚. Π”ΠΎΠ±Π°Π²ΠΈΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 150 элСмСнтов.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΡƒΠ΄Π°Π»ΠΈΠΌ Ρ‚Π΅ ΠΆΠ΅ 150 элСмСнтов, ΠΈ снова Π·Π°ΠΌΠ΅Ρ€ΠΈΠΌ.

Как Π²ΠΈΠ΄Π½ΠΎ, Ρ€Π°Π·ΠΌΠ΅Ρ€ Π΄Π°ΠΆΠ΅ Π±Π»ΠΈΠ·ΠΊΠΎ Π½Π΅ вСрнулся ΠΊ исходному. Если Π΅ΡΡ‚ΡŒ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅/ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ, ΠΌΠΎΠΆΠ½ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ конструктором HashMap(Map).

Π˜Ρ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹

HashMap ΠΈΠΌΠ΅Π΅Ρ‚ встроСнныС ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ список всСх ΠΊΠ»ΡŽΡ‡Π΅ΠΉ keySet(), всСх Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ values() ΠΈΠ»ΠΈ ΠΆΠ΅ всС ΠΏΠ°Ρ€Ρ‹ ΠΊΠ»ΡŽΡ‡/Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ entrySet(). НиТС прСдставлСны Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ для ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° элСмСнтов:

Π‘Ρ‚ΠΎΠΈΡ‚ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ссли Π² Ρ…ΠΎΠ΄Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° HashMap Π±Ρ‹Π» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ (Π±Π΅Π· использования собствСнным ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°), Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° элСмСнтов Π±ΡƒΠ΄Π΅Ρ‚ нСпрСдсказуСмым.

Π˜Ρ‚ΠΎΠ³ΠΈ

β€” Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ элСмСнта выполняСтся Π·Π° врСмя O(1), ΠΏΠΎΡ‚ΠΎΠΌΡƒ ΠΊΠ°ΠΊ Π½ΠΎΠ²Ρ‹Π΅ элСмСнты Π²ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Π² Π½Π°Ρ‡Π°Π»ΠΎ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ;
β€” ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ получСния ΠΈ удалСния элСмСнта ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π·Π° врСмя O(1), Ссли Ρ…ΡΡˆ-функция Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎ распрСдСляСт элСмСнты ΠΈ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΈ. Π‘Ρ€Π΅Π΄Π½Π΅Π΅ ΠΆΠ΅ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚ Θ(1 + Ξ±), Π³Π΄Π΅ Ξ± β€” коэффициСнт Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. Π’ самом Ρ…ΡƒΠ΄ΡˆΠ΅ΠΌ случаС, врСмя выполнСния ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Θ(n) (всС элСмСнты Π² ΠΎΠ΄Π½ΠΎΠΉ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ΅);
β€” ΠšΠ»ΡŽΡ‡ΠΈ ΠΈ значСния ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ², Π² Ρ‚ΠΎΠΌ числС ΠΈ null. Для хранСния ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ классы-ΠΎΠ±Π΅Ρ€ΠΊΠΈ;
β€” НС синхронизирован.

Бсылки

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ для Π·Π°ΠΌΠ΅Ρ€ΠΎΠ² β€” memory-measurer ΠΈ Guava (Google Core Libraries).

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠŸΠ°Ρ€ΡˆΠΈΠ½ ПавСл

Π“Π»Π°Π²Π½ΠΎΠ΅ мСню

Вопросы ΠΈ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ Π½Π° собСсСдовании ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅ Java Collection Framework. Π§Π°ΡΡ‚ΡŒ 1.

ΠžΠ±Ρ‰Π°Ρ иСрархия

ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

9. Как ΠΎΠ΄Π½ΠΈΠΌ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ элСмСнты ΠΈΠ· любой Collection Π² массив?

Iterator, Iterable

Оба интСрфСйса ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для ΠΎΠ±Ρ…ΠΎΠ΄Π° ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ Iterator Π±Ρ‹Π» Π²Π²Π΅Π΄Π΅Π½ нСсколько ΠΏΠΎΠ·Π΄Π½Π΅Π΅ Π² Java Collections Framework ΠΈ Π΅Π³ΠΎ использованиС ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ различия Iterator ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Enumeration :

НСт, hasNext() осущСствляСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ наличия ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ элСмСнта.

7. Если Ρƒ мСня Π΅ΡΡ‚ΡŒ коллСкция ΠΈ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½Π½Ρ‹ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€, измСнится Π»ΠΈ коллСкция, Ссли я Π²Ρ‹Π·ΠΎΠ²Ρƒ iterator.remove()?

Если iterator.next() Π±Ρ‹Π» Π²Ρ‹Π·Π²Π°Π½ ΠΏΡ€Π΅ΠΆΠ΄Π΅, Ρ‚ΠΎ iterator.remove() ΡƒΠ΄Π°Π»ΠΈΡ‚ элСмСнт, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€.

List: ArrayList, LinkedList

ОбС структуры Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для хранСния ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ элСмСнтов, Π² Ρ‚ΠΎΠΌ числС Π΄ΡƒΠΏΠ»ΠΈΠΊΠ°Ρ‚ΠΎΠ² ΠΈ null. Они основаны Π½Π° использовании массивов, динамичСски Ρ€Π°ΡΡˆΠΈΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ ΠΏΡ€ΠΈ нСобходимости.

Класс Vector Π±Ρ‹Π» Π²Π²Π΅Π΄Π΅Π½ Π² JDK 1.0 ΠΈ Π½Π΅ являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ Java Collection Framework. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса Vector синхронизированы, Ρ‡Ρ‚ΠΎ обСспСчиваСт ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ, Π½ΠΎ это ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ сниТСнию ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, поэтому ΠΈ Π±Ρ‹Π» Π²Π²Π΅Π΄Π΅Π½ класс ArrayList, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π΅ синхронизированы.

3. LinkedList β€” это односвязный, двусвязный ΠΈΠ»ΠΈ чСтырСхсвязный список?

Двухсвязный список: ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт LinkedList Ρ…Ρ€Π°Π½ΠΈΡ‚ ссылку Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ элСмСнты.

Если Π² массивС достаточно мСста для размСщСния Π½ΠΎΠ²ΠΎΠ³ΠΎ элСмСнта, Ρ‚ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ мСсто Π² памяти Π½Π΅ выдСляСтся. Π˜Π½Π°Ρ‡Π΅ происходит созданиС Π½ΠΎΠ²ΠΎΠ³ΠΎ массива с Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ:

Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, создаСтся Π½ΠΎΠ²Ρ‹ΠΉ массив, Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ вычисляСтся ΠΊΠ°ΠΊ ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ старого Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° 1.5 (это Π²Π΅Ρ€Π½ΠΎ для JDK 1.7, Π² Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½ΠΈΡ… вСрсиях вычислСния ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ).

Для 64-Π±ΠΈΡ‚Π½ΠΎΠΉ JVM каТдая ссылка Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 64 Π±ΠΈΡ‚Π° (8 Π±Π°ΠΉΡ‚), Ρ€Π°Π·ΠΌΠ΅Ρ€ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° составляСт 16 Π±Π°ΠΉΡ‚ (Π΄Π²Π° ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… слова). ВычислСния Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€. Для этого Π² LinkedList Π΅ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ descendingIterator().

14. Как ΠΎΠ΄Π½ΠΈΠΌ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ ΠΈΠ· List ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ List со всСми элСмСнтами, ΠΊΡ€ΠΎΠΌΠ΅ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… ΠΈ послСдних 3-Ρ…?

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π² Java

2020.06.08 (ПослСднСС измСнСниС: 2021.07.15)

ΠžΠ±Ρ‰Π΅Π΅ описаниС

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ

Π˜Π΅Ρ€Π°Ρ€Ρ…ΠΈΡ интСрфСйсов ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ
ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΠžΠΏΠΈΡΠ°Π½ΠΈΠ΅
ItarableРСализация Π΄Π°Π½Π½ΠΎΠ³ΠΎ интСрфСйса позволяСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² Ρ†ΠΈΠΊΠ»Π΅ β€œfor-each”
CollectionΠšΠΎΡ€Π½Π΅Π²ΠΎΠΉ интСрфСйс Π² ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ.
ListУпорядочСнная коллСкция (Ρ‚Π°ΠΊΠΆΠ΅ извСстная ΠΊΠ°ΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ).
SetΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡ (Π½Π°Π±ΠΎΡ€/мноТСство), которая Π½Π΅ содСрТит ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ элСмСнтов.
SortedSetΠ˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ Set, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ обСспСчиваСт упорядочСниС ΠΏΠΎ Π΅Π³ΠΎ элСмСнтам.
NavigableSetΠ˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ SortedSet Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… поиск Π±Π»ΠΈΠΆΠ°ΠΉΡˆΠΈΡ… совпадСний искомых элСмСнтов.
QueueΠžΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Π° для хранСния элСмСнтов ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ.
DequeЛинСйная коллСкция, которая ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ вставку ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнтов Π½Π° ΠΎΠ±ΠΎΠΈΡ… ΠΊΠΎΠ½Ρ†Π°Ρ….
MapΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. ΠžΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сопоставляСт ΠΊΠ»ΡŽΡ‡ΠΈ со значСниями.
SortedMapΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ обСспСчиваСт упорядочиваниС ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Π°ΠΌ.
NavigableMapΠ˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ SortedMap Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… поиск Π±Π»ΠΈΠΆΠ°ΠΉΡˆΠΈΡ… совпадСний искомых элСмСнтов.
IteratorΠ˜Ρ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΏΠΎ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ.
ListIteratorΠ˜Ρ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ для списков, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт программисту ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ ΠΏΠΎ списку Π² любом Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ, ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ список Π²ΠΎ врСмя ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π² спискС.
RandomAccessΠœΠ°Ρ€ΠΊΠ΅Ρ€Π½Ρ‹ΠΉ интСрфСйс, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ рСализациями списков для указания Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ быстрый (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ постоянный ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ) ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ доступ.
Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΠžΠΏΠΈΡΠ°Π½ΠΈΠ΅
CloneableΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ классам, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΌ интСрфСйс, ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ копию экзСмпляра класса.
SerializableΠ˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ позволяСт классу Π±Ρ‹Ρ‚ΡŒ сСриализованным, это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π±ΠΈΡ‚ ΠΈΠ»ΠΈ Π±Π°ΠΉΡ‚ для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΏΠΎ сСти.

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ Map

ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ… для хранСния связанных вмСстС ΠΏΠ°Ρ€ β€œΠΊΠ»ΡŽΡ‡-значСниС”.

public interface Map

Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ классы

КлассОписаниС
static interface Map.EntryΠ—Π°ΠΏΠΈΡΡŒ отобраТСния (ΠΏΠ°Ρ€Π° ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ отобраТСния). ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Map.entrySet()
ΠœΠ΅Ρ‚ΠΎΠ΄ΠžΠΏΠΈΡΠ°Π½ΠΈΠ΅
K getKey()Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΊΠ»ΡŽΡ‡ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π΄Π°Π½Π½ΠΎΠΉ записи.
V getValue()Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ Π΄Π°Π½Π½ΠΎΠΉ записи.
V setValue(V value)ЗамСняСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ этой записи Π½Π° ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ опСрация).

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹

НаиболСС ΠΎΠ±Ρ‰ΠΈΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ свСдСны Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅:

InterfaceHash TableResizable ArrayBalanced TreeLinked ListHash Table + Linked List
SetHashSetTreeSetLinkedHashSet
ListArrayListLinkedList
DequeArrayDequeLinkedList
MapHashMapTreeMapLinkedHashMap

Бвойства ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ

ВрСмСнная ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ

Π‘Ρ€Π΅Π΄Π½Π΅Π΅Π˜Π½Π΄Π΅ΠΊΡΠŸΠΎΠΈΡΠΊΠ’ΡΡ‚Π°Π²ΠΊΠ°Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅
ArrayListO(1)O(n)O(n)O(n)
VectorO(1)O(n)O(n)O(n)
LinkedListO(n)O(n)O(1)O(1)
Hashtablen/aO(1)O(1)O(1)
HashMapn/aO(1)O(1)O(1)
LinkedHashMapn/aO(1)O(1)O(1)
TreeMapn/aO(log(n))O(log(n))O(log(n))
HashSetn/aO(1)O(1)O(1)
LinkedHashSetn/aO(1)O(1)O(1)
TreeSetn/aO(log(n))O(log(n))O(log(n))
Π₯ΡƒΠ΄ΡˆΠ΅Π΅Π˜Π½Π΄Π΅ΠΊΡΠŸΠΎΠΈΡΠΊΠ’ΡΡ‚Π°Π²ΠΊΠ°Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅
ArrayListO(1)O(n)O(n)O(n)
VectorO(1)O(n)O(n)O(n)
LinkedListO(n)O(n)O(1)O(1)
Hashtablen/aO(n)O(n)O(n)
HashMapn/aO(n)O(n)O(n)
LinkedHashMapn/aO(n)O(n)O(n)
TreeMapn/aO(log(n))O(log(n))O(log(n))
HashSetn/aO(n)O(n)O(n)
LinkedHashSetn/aO(n)O(n)O(n)
TreeSetn/aO(log(n))O(log(n))O(log(n))

ArrayList

ЯвляСтся Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ динамичСского массива ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ null Π² качСствС элСмСнта. РСализация основана Π½Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌ массивС.

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ, Ссли Π² процСссС Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠ΅ΠΉ прСдполагаСтся частоС ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ элСмСнтам ΠΏΠΎ индСксу.
НС рСкомСндуСтся ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ, Ссли трСбуСтся частоС ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅/Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ элСмСнтов Π² сСрСдину ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования ArrayList

Бсылки

LinkedList

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования LinkedList

Бсылки:

HashSet

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования Ρ…ΡΡˆ-мноТСства HashSet

Бсылки:

TreeSet

Π”Ρ€Π΅Π²ΠΎΠ²ΠΈΠ΄Π½ΠΎΠ΅ мноТСство. Π₯Ρ€Π°Π½ΠΈΡ‚ ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ Π² Π²ΠΈΠ΄Π΅ структуры красно-Ρ‡Π΅Ρ€Π½ΠΎΠ³ΠΎ Π΄Π΅Ρ€Π΅Π²Π°.

ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования TreeSet

Бсылки:

EnumSet

Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ мноТСство ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ с Ρ‚ΠΈΠΏΠ°ΠΌΠΈ enum (пСрСчислСниями).

Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π±ΠΈΡ‚ΠΎΠ²ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π±ΠΈΡ‚Π΅ устанавливаСтся 1, Ссли ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ пСрСчислСния присутствуСт Π² мноТСствС. ВсС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π² EnumSet Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ с использованиСм арифмСтичСских ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. Π­Ρ‚ΠΈ вычислСния ΠΎΡ‡Π΅Π½ΡŒ быстрыС, ΠΈ поэтому всС основныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π·Π° постоянноС врСмя. Если ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ EnumSet с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ рСализациями Set Ρ‚ΠΎ ΠΎΠ½ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ быстрСС, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ значСния хранятся Π² прСдсказуСмом порядкС, ΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ вычислСния Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Π±ΠΈΡ‚. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ HashSet, Π½Π΅Ρ‚ нСобходимости Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ hashcode, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ сСгмСнт. EnumSet ΠΎΡ‡Π΅Π½ΡŒ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π΅Π½ ΠΈ эффСктивСн. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ мСньшС памяти.

EnumSet слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Ρ…Ρ€Π°Π½ΠΈΠΌ значСния enum Π² мноТСствС.

ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования EnumSet

Бсылки:

LinkedHashSet

ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‰Π΅Π΅ значСния Π² Ρ…ΡΡˆ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π² Π²ΠΈΠ΄Π΅ связанного списка с сохранСниСм порядка Π²Π²ΠΎΠ΄Π°.

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ LinkedHashSet ΠΈ HashSet

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ LinkedHashSet ΠΈ TreeSet

ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

Бсылки:

ArrayDeque

Двусторонняя ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ. Массив с ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠΌΡΡ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΉ интСрфСйс Deque.

ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ ArrayDeque ΠΈ LinkedList

ИспользованиС Π² качСствС стэка

Бсылки:

PriorityQueue

ΠžΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΏΠΎ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Ρƒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ элСмСнты Π² отсортированном порядкС, послС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ Π²Π²Π΅Π΄Π΅Π½Ρ‹ Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΌ порядкС.

НапримСр, ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ элСмСнты Π² порядкС возрастания. Π’ этом случаС Π³ΠΎΠ»ΠΎΠ²Π° ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° наимСньший элСмСнт. Когда элСмСнт Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ наимСньший элСмСнт станСт Π³ΠΎΠ»ΠΎΠ²ΠΎΠΉ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ.
Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½ΠΎΠΉ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ отсортированы, ΠΎΠ΄Π½Π°ΠΊΠΎ элСмСнты Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ Π² отсортированном порядкС.

ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

Бсылки:

HashMap

ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ… для хранСния связанных вмСстС ΠΏΠ°Ρ€ β€œΠΊΠ»ΡŽΡ‡-значСниС”. Π₯ΡΡˆΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠ»ΡŽΡ‡ΠΈ, значСния Π½Π΅ Ρ…ΡΡˆΠΈΡ€ΡƒΡŽΡ‚ΡΡ. Π₯ΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ выполняСтся Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ быстрСС, Ρ‡Π΅ΠΌ вставка Π² Π΄Π΅Ρ€Π΅Π²ΠΎ, поэтому Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° Π½Π΅ трСбуСтся отсортированный порядок ΠΊΠ»ΡŽΡ‡Π΅ΠΉ.

ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

Бсылки:

TreeMap

ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ… для хранСния связанных вмСстС ΠΏΠ°Ρ€ β€œΠΊΠ»ΡŽΡ‡-значСниС”. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Π² Π²ΠΈΠ΄Π΅ Π΄Π΅Ρ€Π΅Π²Π° для поиска. Ѐункция сравнСния для вставки Π² Π΄Π΅Ρ€Π΅Π²ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΊΠ»ΡŽΡ‡Π΅ΠΉ, значСния Π½Π΅ ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ.

ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

Бсылки:

WeakHashMap

ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ основанноС Π½Π° Ρ…ΡΡˆ Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ… со слабыми ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ. Записи Π² Π½Π΅ΠΌ автоматичСски Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹ систСмой сборки β€œΠΌΡƒΡΠΎΡ€Π°β€, Ссли ΠΊΠ»ΡŽΡ‡ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ (Π½Π° Π½Π΅Π³ΠΎ Π½Π΅Ρ‚ ссылок, ΠΊΡ€ΠΎΠΌΠ΅ WeakHashMap), ΠΏΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΠΊΠ»ΡŽΡ‡Π° Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄Π°Π»Π΅Π½ΠΎ связанноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ WeakHashMap ΠΈ HashMap

Бсылки:

LinkedHashMap

ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ основанноС Π½Π° Ρ…ΡΡˆ-Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ… с сохранСниСм порядка Π²Π²ΠΎΠ΄Π° элСмСнтов ΠΈΠ»ΠΈ порядка доступа ΠΊ элСмСнтам Π² Π΄Π²ΡƒΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΠΌ связанном спискС. ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ доступа ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован ΠΏΡ€ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ с β€œΠ½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π΄Π°Π²Π½ΠΈΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌβ€. Π‘ΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ элСмСнты, Π° ΠΏΡ€ΠΈ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ удаляСтся Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ старый элСмСнт.

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ LinkedHashMap ΠΈ HashMap

Оба LinkedHashMap ΠΈ HashMap Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ интСрфСйс Map. Однако, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ отличия ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ.

ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

Бсылки:

EnumMap

Класс EnumMap спСциализированная рСализация Map для использования Ρ‚ΠΈΠΏΠ° enum Π² качСствС ΠΊΠ»ΡŽΡ‡Π΅ΠΉ. ВсС ΠΊΠ»ΡŽΡ‡ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Ρ‚ΠΈΠΏ enum ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ явно ΠΈΠ»ΠΈ нСявно ΡƒΠΊΠ°Π·Π°Π½ ΠΏΡ€ΠΈ создании отобраТСния. Π’Π½ΡƒΡ‚Ρ€ΠΈ Π΄Π°Π½Π½Ρ‹ΠΉ класс Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΊΠ°ΠΊ массивы. Вакая рСализация ΠΎΡ‡Π΅Π½ΡŒ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Π° ΠΈ эффСктивна.

ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

Бсылки:

IdentityHashMap

Π­Ρ‚ΠΎΡ‚ класс Π½Π΅ являСтся Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния интСрфСйса Map! Π₯отя этот класс Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ интСрфСйс Map, ΠΎΠ½ Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ Π½Π°Ρ€ΡƒΡˆΠ°Π΅Ρ‚ ΠΎΠ±Ρ‰Π΅Π΅ соглашСниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ прСдписываСт использованиС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° equals() ΠΏΡ€ΠΈ сравнСнии ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π­Ρ‚ΠΎΡ‚ класс ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ³Π΄Π° трСбуСтся сСмантика равСнства ссылок.
Класс IdentityHashMap ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° Ρ…ΡΡˆ-значСния ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒΡΡ Π½Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ hashCode(), Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ System.identityHashCode(). Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ вычислСниС Ρ…ΡΡˆ-ΠΊΠΎΠ΄Π° происходит исходя ΠΈΠ· адрСса ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² памяти. Для сравнСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ‚ΠΈΠΏΠ° IdentityHashMap ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ опСрация ==, Π° Π½Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ equals().

ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

Бсылки:

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΡ ΠΈ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ называСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΉ интСрфСйс ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ исходной ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠ΅ΠΉ.

ΠŸΠΎΠ΄Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹

headSet()

tailSet()

headMap()

tailMap()

НСмодифицируСмыС прСдставлСния

Π’ классС Collections Π΅ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ Π½Π΅ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ прСдставлСния ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ. Π”Π°Π½Π½Ρ‹Π΅ прСдставлСния производят Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅.

Π‘ΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ прСдставлСния

Если ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ происходит ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π΅Π΅ ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅. ВмСсто Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ потокобСзопасных классов Π±Ρ‹Π» использован ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ прСдставлСний, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ потокобСзопасными ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌΡ‹Π΅ прСдставлСния

ΠŸΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ошибок, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ². ΠŸΡ€ΠΈ нСсоотвСтствии Ρ‚ΠΈΠΏΠ° гСнСрируСтся ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° ClassCastException.

ΠŸΡ€ΠΎΡ‡Π΅Π΅

Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΈ пСрСстановка

Π”Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ поиск

Алгоритмы

Π’Π·Π°ΠΈΠΌΠ½ΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ ΠΈ массивов

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ массива Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π² массив

Π’ интСрфСйсС Interface Collection Π΅ΡΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹:

УнаслСдованныС ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ выпускС java появились ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΠ²ΡˆΠΈΠ΅ΡΡ Π΄ΠΎ появлСния Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ. Они Π±Ρ‹Π»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π² Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ.

Π˜Π΅Ρ€Π°Ρ€Ρ…ΠΈΡ унаслСдованных классов ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ Hashtable, Properties
ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

Π˜Π΅Ρ€Π°Ρ€Ρ…ΠΈΡ унаслСдованных классов ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ Vector, Stack
ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ интСрфСйс обСспСчиваСт Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ€Π°Ρ… ΠΊΠ»ΡŽΡ‡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ИспользованиС ΠΏΠ°Ρ€ Π² Java

Π£Π·Π½Π°ΠΉΡ‚Π΅, ΠΊΠ°ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ сопряТСния Π² Java.

1. ΠžΠ±Π·ΠΎΡ€

ΠŸΡ€ΠΎΡΡ‚Π°Ρ рСализация ΠŸΠ°Ρ€Ρ‹ доступна Π² основных Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ… Java. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сторонниС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Apache Commons ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅, прСдоставили эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π² своих ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… API.

Π”Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ΅Π΅ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅:

Π₯эш-ΠΊΠ°Ρ€Ρ‚Π° Java Под ΠΊΠ°ΠΏΠΎΡ‚ΠΎΠΌ

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ ΠΏΠΎ ΠΊΠ°Ρ€Ρ‚Π΅ Π½Π° Java

Java – ОбъСдинСниС ΠΠ΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ

2. Основная РСализация Java

2.1. Класс ΠŸΠ°Ρ€

Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ простой Π¦Π΅Π»ΠΎΠ΅ число Π² Π‘Ρ‚Ρ€ΠΎΠΊΡƒ сопоставлСниС с использованиСм ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ ΠΏΠ°Ρ€.

2.2. Абстрактная ΠΊΠ°Ρ€Ρ‚Π°.SimpleEntry ΠΈ АбстрактНая ΠΊΠ°Ρ€Ρ‚Π°.SimpleImmutableEntry

Доступ ΠΊ ΠΊΠ»ΡŽΡ‡Ρƒ ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ стандартных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² получСния ΠΈ настройки.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, класс AbstractMap Ρ‚Π°ΠΊΠΆΠ΅ содСрТит Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ класс, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡƒΡŽ ΠΏΠ°Ρ€Ρƒ, класс SimpleImmutableEntry :

3. ΠžΠ±Ρ‰ΠΈΠ΅ рСсурсы Apache

Π’ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Apache Commons ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΉΡ‚ΠΈ класс Pair Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ org.apache.commons.lang3.tuple|/. Π­Ρ‚ΠΎ абстрактный класс, поэтому Π΅Π³ΠΎ нСльзя ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ.

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΉΡ‚ΠΈ Π΄Π²Π° подкласса, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… нСизмСняСмыС ΠΈ измСняСмыС ΠΏΠ°Ρ€Ρ‹, Imm utable ΠŸΠ°Ρ€Π° ΠΈ ИзмСняСмая ΠΏΠ°Ρ€Π°.

ОбС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ доступ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ получСния/установки ΠΊΠ»ΡŽΡ‡Π΅ΠΉ/Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ:

ΠΠ΅ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΏΡ€ΠΈΠ·Π²Π°Ρ‚ΡŒ Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ SET() Π½Π° НСизмСнная ΠΏΠ°Ρ€Π° ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ UnsupportedOperationException.

Однако опСрация ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ допустима для измСняСмой Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ:

4. Π’Π°Π²Ρ€

Π’ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Vavr функция сопряТСния обСспСчиваСтся нСизмСняСмым классом Tuple2 :

Π’ этой Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ послС создания, поэтому ΠΌΡƒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Π½ΠΎΠ²Ρ‹ΠΉ экзСмпляр, содСрТащий ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅:

5. ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° I – Класс ΠŸΡ€ΠΎΡΡ‚Ρ‹Ρ… ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ²

Π›ΠΈΠ±ΠΎ ΠΏΠΎ прСдпочтСниям ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π»ΠΈΠ±ΠΎ Π² отсутствиС ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΈΠ· Π²Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ стандартным ΠΎΠ±Ρ…ΠΎΠ΄Π½Ρ‹ΠΌ ΠΏΡƒΡ‚Π΅ΠΌ для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ сопряТСния являСтся созданиС простого ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π½ΠΎΠ³ΠΎ класса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±Π΅Ρ€Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΆΠ΅Π»Π°Π΅ΠΌΡ‹Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ значСния.

Π‘Π°ΠΌΡ‹ΠΌ большим прСимущСством здСсь являСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ нашС имя, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ наличия ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ класса, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π΄ΠΎΠΌΠ΅Π½Π°:

6. ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° II – ΠœΠ°ΡΡΠΈΠ²Ρ‹

Π”Ρ€ΡƒΠ³ΠΈΠΌ распространСнным ΠΎΠ±Ρ…ΠΎΠ΄Π½Ρ‹ΠΌ ΠΏΡƒΡ‚Π΅ΠΌ являСтся использованиС простого массива с двумя элСмСнтами для достиТСния Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Ρ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ²:

Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΊΠ»ΡŽΡ‡ находится Π² Π½ΡƒΠ»Π΅Π²ΠΎΠΌ индСксС массива, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ находится Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ индСксС.

7. Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ обсудили ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ ΠŸΠ°Ρ€ Π² Java ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, доступныС Π² основной Java, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… сторонних Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ….

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *