treemap java tutorial with java treemap examples
Овај Јава ТрееМап водич говори о ТрееМап класи, итерацији, примерима ТрееМап-а, имплементацији, Јава Хасхмап-у вс Треемап-у, ТрееМап АПИ методама итд.:
Структура података ТрееМап је колекција која чува парове кључ / вредност у природно сортираном редоследу. Карта дрвета је део оквира Јава Цоллецтионс Фрамеворк и представља имплементацију мапе.
=> Овде проверите СВЕ Јава туторијале.
Шта ћете научити:
Јава ТрееМап
Неке од главних карактеристика ТрееМап-а у Јави су следеће:
- Класа ТрееМап која имплементира мапу дрвета у Јави део је пакета јава.утил. Примењује интерфејс Мап.
- Класа ТрееМап проширује класу АбстрацтМап и такође имплементира интерфејс НавигаблеМап и СортедМап (индиректно).
- ТрееМап није синхронизован.
- Подразумевано су елементи ТрееМап подразумевано у узлазном редоследу.
- ТрееМап не дозвољава двоструке елементе.
- ТрееМап дозвољава нулл вредности, али не и нулл кључеве.
Дијаграм испод приказује хијерархију класе за класу ТрееМап.
Као што је већ поменуто, класа ТрееМап имплементира интерфејс НавигаблеМап који заузврат проширује класу СортедМап. СортедМап даље наслеђује интерфејс мапе.
Декларација класе ТрееМап
Општа декларација класе ТрееМап дата је у наставку:
public class TreeMap extends AbstractMap implements NavigableMap, Cloneable, Serializable
где је К => тип кључева који одржава ТрееМап
В => тип мапираних вредности
Пример ТрееМап-а
Програм у наставку приказује једноставан пример структуре података ТрееМап.
import java.util.*; class Main{ public static void main(String args()){ //declare a TreeMap and initialize it TreeMap cities_map=new TreeMap (); cities_map.put(100,'Pune'); cities_map.put(102,'Jaipur'); cities_map.put(101,'Hyderabad'); cities_map.put(103,'Bangaluru'); //print the TreeMap contents using forEach System.out.println('Contents of TreeMap:'); System.out.print('{'); for(Map.Entry entries:cities_map.entrySet()){ System.out.print(entries.getKey()+' = '+entries.getValue() + ' '); } System.out.println('}'); } }
Излаз:
Садржај ТрееМап:
{100 = Пуне 101 = Хидерабад 102 = Јаипур 103 = Бангалуру}
У овом програму смо дефинисали једноставан објект ТрееМап под називом, цитиес_мап, а затим смо методом пут иницијализовали у парове кључ / вредност.
Затим користимо методу ентриСет () класе ТрееМап и прелазимо преко овог скупа користећи форЕацх петљу за испис парова кључ / вредност. За штампање парова кључ / вредност користимо методе гетКеи () и гетВалуе ().
скл упити увежбавају питања са одговорима
ТрееМап АПИ методе и конструктори
У овом одељку ћемо разговарати о различитим конструкторима и методама које нуди класа ТрееМап.
Конструктори
Прототип конструктора | Опис | |
---|---|---|
силазнаКарта | НавигаблеМап десцендингМап () | Враћа дате парове кључ / вредност у обрнутом редоследу. |
ТрееМап () | Подразумевани конструктор за креирање празне ТрееМап са природним редоследом. | |
ТрееМап (упоредни компаратор) | Конструише празну ТрееМап која се сортира на основу наведеног упоређивача. | |
Карта дрвета (карта м) | Конструише ТрееМап и иницијализује га елементима наведене мапе, м. Наручивање је природно. | |
Карта дрвета (Сортирана карта м) | Израђује ТрееМап и иницијализује га уносима СортедМап. Наручивање је исто као сортедМап. |
Методе
Метод | Прототип методе | Опис |
---|---|---|
плафонУлаз | Мап.Ентри плафонЕнтри (тастер К) | Даје најмањи пар кључ / вредност такав да је кључ већи или једнак наведеном кључу; нулл ако нема кључа |
плафонКључ | К плафонКључ (тастер К) | Враћа кључ који је најмањи и већи од датог кључа; враћа нулу ако нема кључа. |
јасно | воид цлеар () | Брише све парове кључ / вредност са мапе дрвета. |
клон | Клон објекта () | Прави плитку копију инстанце ТрееМап. |
упоређивач | Компаратор упоређивач () | Враћа упоређивач који се користи за распоређивање тастера. ништа ако је наручивање природно |
десцендингКеиСет | НавигаблеСет десцендингКеиСет () | Враћа НавигаблеСет приказ тастера ТрееМап у обрнутом редоследу. |
фирстЕнтри | Мап.Ентри фирстЕнтри () | Враћа пар кључ / вредност. |
флоорЕнтри | Мап.Ентри флоорЕнтри (тастер К) | Враћа највећи кључ који је мањи или једнак датом кључу; нулл ако нема такав кључ |
за сваки | воид форЕацх (акција БиЦонсумер) | Дата акција се изводи за сваки унос у ТрееМап. |
хеадМап | СортедМап хеадМап (К тоКеи) | Користи се за враћање пара кључ / вредност тако да је враћени кључ строго мањи од тоКеи |
хеадМап | НавигаблеМап хеадМап (К тоКеи, укључујући логичку вредност) | Приказује парове кључ / вредност оних кључева који су мањи од тоКеи или једнаки ако укључују. |
хигхерЕнтри | Мап.Ентри хигхерЕнтри (тастер К) | Приказује најмањи кључ или нулу. Враћени кључ је строго већи од датог кључа. |
вишиКључ | К вишиКључ (тастер К) | Враћа кључ ако је мапирање дато за дати кључ у мапи дрвета. |
кеиСет | Постави кеиСет () | Враћа скуп скупова кључева у ТрееМап-у. |
ластЕнтри | Мап.Ентри ластЕнтри () | Враћа пар кључ / вредност тако да је кључ највећи кључ. Враћа нулу ако кључ не постоји. |
ловерЕнтри | Мап.Ентри ловерЕнтри (тастер К) | Враћа пар кључ / вредност тако да је кључ највећи и строго мањи од датог кључа. Враћа нулу ако кључ не постоји. |
ловерКеи | К доњи тастер (тастер К) | Приказује највећи кључ или нулу. Враћени кључ је строго мањи од датог кључа. |
навигаблеКеиСет | НавигаблеСет навигаблеКеиСет () | Приказује „НавигаблеСет“ тастера у ТрееМап-у. |
поллФирстЕнтри | Мап.Ентри поллФирстЕнтри () | Уклања и затим враћа пар кључ / вредност најмањег кључа. |
поллЛастЕнтри | Мап.Ентри поллЛастЕнтри () | Уклања и враћа пар кључ / вредност највећег кључа. |
ставити | В пут (кључ К, вредност В) | Додаје дати кључ и вредност ТрееМап-у. |
Стави све | воид путАлл (мапа мапе) | Сви парови кључ / вредност са дате мапе копирају се на ТрееМап. |
заменити | В замена (тастер К, вредност В) | Замењује или мења вредност датог кључа датом вредношћу. |
заменити | логичка замена (тастер К, В олдВалуе, В невВалуе) | Замењује олдВалуе датог кључа са невВалуе. |
замените | воид реплацеАлл (функција БиФунцтион) | Призива дату функцију и замењује све уносе резултатом функције. |
подкарта | Подмапа НавигаблеМап (К фромКеи, боолеан фромИнцлусиве, К тоКеи, боолеан тоИнцлусиве) | Враћа парове кључева / вредности кључева из „фромКеи“ у „тоКеи“. |
СортедМап | Подмапа сортиране карте (К одКеи, К тоКеи) | Враћа парове кључ / вредност за опсег одКључ (укључујући) до Кључ (ексклузивно). |
таилМап | СортедМап таилМап (К фромКеи) | Враћа парове кључ / вредност тако да су кључеви већи или једнаки одКеи. |
таилМап | НавигаблеМап таилМап (К одКеи, укључујући логичку вредност) | Приказује парове кључ / вредност за кључеве једнаке одКеи (укључујући = тачно) или веће од одКеи. |
цонтаинсКеи | боолеан цонтаинсКеи (Објецт кеи) | Проверава да ли постоји мапирање за дати кључ у мапи дрвета. Враћа тачно ако је одговор да. |
цонтаинсВалуе | боолеан цонтаинсВалуе (вредност објекта) | Проверава да ли постоји кључ који је мапиран са датом вредношћу. Приказује да ако је тачно. |
фирстКеи | К фирстКеи () | Приказује најнижи кључ или први кључ на Сортираној мапи |
добити | В гет (Објецт кеи) | Дохваћа вредност мапирану у дати кључ |
ластКеи | К ластКеи () | Враћа последњи или највиши кључ на сортираној мапи. |
уклонити | В уклони (тастер објекта) | Брише пар кључ / вредност за дати кључ у ТрееМап-у |
ентриСет | Комплет | Враћа скуп за дату ТрееМап. |
величина | инт величина () | Приказује величину или укупан број парова кључ / вредност у ТрееМап-у. |
вредности | Вредности колекције () | Враћа колекцију вредности за ТрееМап. |
Итерирање кроз ТрееМап
ТрееМап се састоји од парова кључ / вредност. Класа ТрееМап пружа методу ‘ентриСет’ која враћа парове кључ / вредност на мапи. Можемо се прелистати кроз ове уносе користећи форЕацх петљу и приказати кључеве и вредности помоћу метода гетКеи () и гетВалуе ().
Ово је приказано у доњем Јава програму:
import java.util.Map; import java.util.TreeMap; class Main { public static void main(String() arg){ //declare and initialize TreeMap Map colorsTree = new TreeMap(); colorsTree.put('R', 'Red'); colorsTree.put('G', 'Green'); colorsTree.put('B', 'Blue'); colorsTree.put('M', 'Magenta'); System.out.println('The contents of TreeMap:'); // retrieve set of map entries using entrySet method for (Map.Entry Map_entry : colorsTree.entrySet()) //print key-value pairs using getKey() and getValue() System.out.println( '(' + Map_entry.getKey() + '=>' + Map_entry.getValue() + ')'); } }
Излаз:
Садржај ТрееМап-а:
(Б => плава)
(Г => Зелено)
(М => магента)
(Р => Црвено)
Имплементација ТрееМап-а у Јави
Следећи Јава програм демонстрира главни метод класе ТрееМап о којој је раније било речи.
import java.util.Map; import java.util.Map.Entry; import java.util.TreeMap; public class Main { public static void main(String() args) { //declare a TreeMap Object and initialize it with values TreeMap map = new TreeMap<>(); for(int i=1;i<=10;i++) { map.put(i, (i*i)+''); } System.out.println('Original Map:' + map); //lowerEntry, higherEntry Entry entry = map.lowerEntry(4); System.out.println('Closest Lower Entry than 4:'+entry); entry = map.higherEntry(4); System.out.println('Closest Higher Entry than 4:'+entry); System.out.println('Closest Lower key than 4 :'+map.lowerKey(4)); entry = map.floorEntry(6); System.out.println('Closest floor entry than 6: '+entry); entry = map.ceilingEntry(6); System.out.println('Closest ceiling Entry than 6 :'+entry); entry = map.firstEntry(); System.out.println('TreeMap First Entry:'+entry); entry = map.lastEntry(); System.out.println('TreeMap Last Entry:'+entry); Map reversedMap = map.descendingMap(); System.out.println('Reversed TreeMap: '+reversedMap); //pollFirstEntry, pollLastEntry entry = map.pollFirstEntry(); System.out.println('TreeMap First Entry:'+entry); entry = map.pollLastEntry(); System.out.println('TreeMap Last Entry:'+entry); //subMap Map subMap = map.subMap(2, true, 6, true); System.out.println('Submap from 2 to 6: '+subMap); //headMap subMap = map.headMap(5, true); System.out.println('HeadMap: '+subMap); //tailMap subMap = map.tailMap(5, true); System.out.println('TailMap: '+subMap); } }
Излаз:
Оригинална мапа: {1 = 1, 2 = 4, 3 = 9, 4 = 16, 5 = 25, 6 = 36, 7 = 49, 8 = 64, 9 = 81, 10 = 100}
Најближи доњи улаз од 4: 3 = 9
Најближи већи улазак од 4: 5 = 25
Најближи доњи тастер од 4: 3
Најближи улаз спрата од 6: 6 = 36
Најближи плафон Улаз од 6: 6 = 36
ТрееМап Први унос: 1 = 1
ТрееМап Последњи унос: 10 = 100
Обрнута карта стабла: {10 = 100, 9 = 81, 8 = 64, 7 = 49, 6 = 36, 5 = 25, 4 = 16, 3 = 9, 2 = 4, 1 = 1}
ТрееМап Први унос: 1 = 1
ТрееМап Последњи унос: 10 = 100
Подмапа од 2 до 6: {2 = 4, 3 = 9, 4 = 16, 5 = 25, 6 = 36}
ХеадМап: {2 = 4, 3 = 9, 4 = 16, 5 = 25}
ТаилМап: {5 = 25, 6 = 36, 7 = 49, 8 = 64, 9 = 81}
Поредај ТрееМап по вредности
Подразумевано се ТрееМап сортира на основу кључева према природном редоследу. Али ако желимо да сортирамо ТрееМап према вредностима, онда морамо да упоредимо да бисмо дефинисали сортирање.
Испод наведени Јава програм сортира ТрееМап према вредности.
import java.util.*; class Main { //Method for sorting the TreeMap based on values public static > Map sortTreeMap(final Map map) { //define a comaprator to sort TreeMap on values Comparator valueComparator = new Comparator() { public int compare(K k1, K k2) { int compare = map.get(k1).compareTo(map.get(k2)); if (compare == 0) return 1; else return compare; } }; //use the comparator to sort the TreeMap and return sortedTreeMap Map sortedTreeMap = new TreeMap(valueComparator); sortedTreeMap.putAll(map); return sortedTreeMap; } public static void main(String args()) { //define and initialize the TreeMap TreeMap treemap = new TreeMap(); treemap.put('R', 'Red'); treemap.put('G', 'Green'); treemap.put('B', 'Blue'); treemap.put('C', 'Cyan'); treemap.put('M', 'Magenta'); // call method sortTreeMap to sort the TreeMap Map sortedTreeMap = sortTreeMap(treemap); // Retrieve set of the entries on the sorted map Set set = sortedTreeMap.entrySet(); System.out.println('The sorted TreeMap based on Values:'); // Now define iterator on this set Iterator i = set.iterator(); // Print TreeMap elements while(i.hasNext()) { Map.Entry me = (Map.Entry)i.next(); System.out.print(me.getKey() + ': '); System.out.println(me.getValue()); } } }
Излаз:
Сортирана ТрееМап на основу вредности:
Б: Плава
Ц: Цијан
Г: Зелено
М: Магента
Р: Црвена
како додати у низ јава
Јава Хасхмап вс Треемап
Погледајмо неке од главних разлика између ХасхМап и ТрееМап.
Табела у наставку показује ове разлике.
ХасхМап | ТрееМап |
---|---|
ХасхМап је много бржи од ТрееМап-а. | ТрееМап је спорији |
Имплементира интерфејс Мап. | Примењује интерфејс НавигаблеМап. |
Користи технику примене хеширања | За примену користите црвено-црно дрво |
Не одржава ниједан редослед који садржи елементе | Кључеви у мапи дрвета су већ наручени према природном редоследу |
Омогућава један нулл кључ и много нулл вредности | Омогућава само нулл вредности, али кључеви не могу бити нулл |
Обавља основне операције, ставља и улази у константно време. | Узмите лог (н) време за извођење операција стављања и преузимања |
ХасхМап има ограничену функционалност. | Класа ТрееМап пружа мноштво додатних функција које нам помажу у манипулисању структуром података. |
За упоређивање користи методу екуалс (). | За поређење користи методу цомпареТо (). |
Често постављана питања
П # 1) Шта је ТрееМап у Јави?
Одговор: ТрееМап у Јави је колекција парова кључ / вредност који су већ сортирани. У сврхе примене користи црвено-црно стабло. Јава ТрееМап имплементира НавигаблеМап интерфејс осим Мап интерфејса и такође проширује класу АбстрацтМап.
К # 2) Зашто користимо ТрееМап у Јави?
Одговор: ТрееМап се користи у Јави за примену Мап и НавигаблеМап интерфејса и класе АбстрацтМап. Како су кључеви ТрееМап сортирани према природном редоследу, ову структуру података можемо користити за чување структуре директорија, хијерархије стабала итд.
К # 3) Шта је боље - ХасхМап или ТрееМап?
Одговор: ХасхМап је бољи од ТрееМап-а. ХасхМап-у је увек потребно константно време за извођење основних операција, док ТрееМап-у треба лог (н) време да изврши ове операције. Када су у питању већи објекти података, ХасхМап ради брже у поређењу са ТрееМапом.
К # 4) Да ли је ТрееМап сортиран?
Одговор: Да, кључни уноси у ТрееМап сортирани су према природном редоследу. Класа ТрееМап такође нам омогућава да користимо прилагођени упоређивач за сортирање ТрееМап-а на основу вредности.
К # 5) Да ли је ТрееМап заштићен нити?
Одговор: Не, ТрееМап није колекција безбедна по нитима.
Закључак
У овом упутству детаљно смо разговарали о ТрееМап-у на Јави. ТрееМап је колекција парова кључ / вредност која имплементира интерфејс мапе. Такође имплементира НавигаблеМап интерфејс. Елементи ТрееМап-а су јединствени и дупликати нису дозвољени.
Видели смо конструкторе и методе ТрееМап-а. Такође смо имплементирали програм ТрееМап и демонстрирали главне методе класе ТрееМап. Затим смо разговарали о разликама између ХасхМап и ТрееМап.
=> Посетите овде да бисте видели серију Јава обуке за све.
Препоручено читање
- ТрееСет у Јави: Водич са примерима програмирања
- Бинарно стабло претраживања у Јави - примери примене и кода
- Водич за ЈАВА за почетнике: 100+ практичних Јава видео водича
- Јава Стринг садржи () Водич за методе са примерима
- Шта је Јава Вецтор | Водич за Јава векторске часове са примерима
- Назубљени низ у Јави - Водич са примерима
- Водич за класу Јава Сцаннер са примерима
- Јава Стринг Водич | Јава стринг методе са примерима