Эмне үчүн Java'да TreeMap колдонобуз?
Эмне үчүн Java'да TreeMap колдонобуз?

Video: Эмне үчүн Java'да TreeMap колдонобуз?

Video: Эмне үчүн Java'да TreeMap колдонобуз?
Video: Рефакторинг: switch vs if-else vs enum vs HashMap [Шаблон "Команда"] 2024, Ноябрь
Anonim

The Javaдагы TreeMap болуп саналат колдонулган Абстракттуу класс менен бирге Map интерфейсин жана NavigableMapди ишке ашыруу үчүн. Карта ачкычтарынын табигый тартибине ылайык, же кайсы конструктор экенине жараша картаны түзүү учурунда берилген Comparator тарабынан сорттолот. колдонулган.

Ошондой эле суроо, TreeMap кантип иштейт?

TreeMap Java тилинде. The TreeMap Карта интерфейсин жана абстракттуу класс менен бирге NavigableMapды ишке ашыруу үчүн колдонулат. Ошондой эле, анын бардык элементтери сакталат TreeMap ачкыч боюнча сорттолот. TreeMap анын ачкычы боюнча табигый тартипте сорттоо жүзөгө ашырат, ошондой эле ыңгайлаштырылган сорттоо ишке ашыруу үчүн Comparator колдонууга мүмкүндүк берет.

Ошо сыяктуу эле, эмне үчүн HashMap TreeMapка караганда тезирээк? Ал O(1) аткарууну камсыз кылат, ал эми TreeMap элементтерди кошуу, издөө жана алып салуу үчүн O(log(n)) аткарууну камсыз кылат. Демек, HashMap адатта болуп саналат тезирээк . А TreeMap эс тутумун натыйжалуураак колдонот, андыктан эстутумда сакталууга тийиш болгон элементтердин санын билбесеңиз, ал сиз үчүн жакшы Картаны ишке ашыруу болуп саналат.

Адамдар дагы сурашат, TreeMap хэшинг колдонобу?

TreeMap болуп саналат HashMapга салыштырмалуу жай, анткени ал add(), remove() жана камтыйт() сыяктуу көпчүлүк операциялар үчүн O(log(n)) аткарууну камсыз кылат. HashMap классы колдонот the хэш стол. TreeMap ички колдонот Кызыл-Кара дарак, ал болуп саналат өзүн-өзү теңдөөчү бинардык издөө дарагы. Map классынын equals() ыкмасы аны жокко чыгарат.

TreeMap сорттолдубу?

Жазуулар а TreeMap ар дайым сорттолгон ачкычтарды табигый иреттөөнүн негизинде, же сиз түзүү учурунда камсыз кыла турган ыңгайлаштырылган компаратордун негизинде TreeMap . TreeMap нөл баскычын камтышы мүмкүн эмес. Бирок, ал нөл маанилерге ээ болушу мүмкүн. TreeMap синхрондоштуруу эмес.

Сунушталууда: