Java-da TreeMap


Java Java xəritəsiBaxılıb 41

Java TreeMap, xəritə interfeysini tətbiq edən bir sinifdir. Açar dəyərli məlumatları səmərəli şəkildə sıralanmış qaydada saxlaya bilən ağac əsaslı bir tətbiqdir. Buna bənzəyir HashMap lakin bu təlimin sonunda görəcəyimiz bir neçə fərq var.

Java-da TreeMap

TreeMap, açarlarına uyğun dəyərləri saxlayır, burada açar boş olmalıdır, dəyərlər lazım olduqda sıfır ola bilər. Verilərin unikal olması və təkrarlanan dəyərlər içərməməsi lazım olan artan bir çeşidləmə qaydasını saxlayır. Artan sıradakı düymələrə əsaslanaraq təbii qaydada çeşidlənir. Bir müqayisə aparatından istifadə edərək məlumatları da çeşidləyə bilərik. Xəritə və naviqasiya interfeysini tətbiq edir və Abstract sinifini genişləndirir.

Sinxronizasiya edilmədiyi üçün TreeMap mövzu təhlükəsiz deyil. Bu mövcuddur java.util harada idxal etməliyik java.util.TreeMap TreeMap istifadə etmək üçün paket.

Java-da TreeMapPin

TreeMap konstruktoru

Java TreeMap sinfi aşağıdakılardan istifadə edir inşaatçılar:

konstruktortəsvir
TreeMap ()Düymələrdən istifadə edərək təbii qaydada çeşidlənəcək boş bir ağac xəritəsi yaradır
TreeMap (Müqayisələndirici c)Parametr olaraq göstərilən Müqayisəedicidən istifadə edərək çeşidləyəcək boş bir ağac xəritəsi yaradır
TreeMap (Xəritə m)Parametr olaraq qəbul edilən Map m girişləri ilə treeMap yaradır və işə salır və düymələri təbii qaydada istifadə edir.
TreeMap (SortMap sm)SortMap sm-dəki girişləri ilə treeMap yaradır və işə salır və sm ilə eyni qaydada sıralayır.

Nümunə: Xəritə istifadə edərək TreeMap

Aşağıdakı nümunə, xəritə istifadə edərək bir xəritənin necə qurulacağını göstərir. Girişlərin düymələrə əsasən artan qaydada sıralandığını görə bilərik.

import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;

public class TreeMapConst {

  public static void main(String[] args) {
    Map<String,String> m = new HashMap<String,String>();
    m.put("red", "Apple");
    m.put("blue", "blueberry");
    m.put("green", "kiwi");

    TreeMap<String,String> tm = new TreeMap<String,String>(m);
    System.out.println(tm);

  }

}
{blue=blueberry, green=kiwi, red=Apple}

Nümunə: SortMap istifadə edərək TreeMap

Aşağıdakı nümunə, SortMap istifadə edərək bir xəritənin necə qurulacağını göstərir.

import java.util.SortedMap;
import java.util.TreeMap;
import java.util.concurrent.ConcurrentSkipListMap;

public class TreeMapConst {

  public static void main(String[] args) {
    
    SortedMap<String,String> sm = new ConcurrentSkipListMap<String,String>();
    sm.put("red", "Apple");
    sm.put("blue", "Blueberry");
    sm.put("green", "Kiwi");
    
    TreeMap<String,String> tm = new TreeMap<String,String>(sm);
    System.out.println(tm);
  }

}
{blue=Blueberry, green=Kiwi, red=Apple}

TreeMap Metodları

Java TreeMap aşağıdakı metodları dəstəkləyir.

ÜsultəsvirParameters
Giriş celingEntry (Tam düymə)Göstərilən düymədən böyük və ya ona bərabər olan ən kiçik düymənin açar dəyəri eşlemesini qaytarır və ya belə bir düymə yoxdursa sıfır qaytarır.açar - böyük düyməni müqayisə etmək üçün istifadə olunan xəritədəki açar
Tamsayı shiftKey (Tam düymə)Göstərilən düymədən böyük və ya bərabər olan ən kiçik açarı qaytarır və ya belə bir düymə yoxdursa, sıfır qaytarıraçar - böyük düyməni müqayisə etmək üçün istifadə olunan xəritədəki açar
boşluq təmiz ()TreeMap-dəki bütün eşlemeleri silər və boş olar
Obyekt klonu ()TreeMap-in dayaz nüsxəsini qaytarır
Müqayisə komparator ()Başqa düymələri sifariş etmək üçün istifadə olunan müqayisəni qaytarır, təbii çeşidləmə istifadə edərsə, sıfır verir
booleanKey (obyekt açarı)Göstərilən açar üçün eşleme varsa, doğru qaytarıraçar - xəritədə axtarış açarı
booleanValue ehtiva edir (obyekt dəyəri)TreeMap düymə ilə dəyərə uyğunlaşdırma ehtiva edirsə, doğru qayıdırdəyər - xəritədə axtarış dəyəri
NavigableSet azalanKeySet ()TreeMap-dəki düymələrin tərs qaydada NaviagbleSet görünüşünü qaytarır
NavigableMap descendingMap ()Xəritədəki uyğunlaşmaların tərs qaydada görünüşünü qaytarır
Dəst girişSet ()Xəritədəki uyğunlaşmanın müəyyən bir görünüşünü qaytarır
Əvvəlcə giriş (giriş)Xəritədəki ən kiçik açarın açar dəyər eşlemesini qaytarır
Tamsayı firstKey ()Xəritədəki ilk aşağı düyməni qaytarır
Giriş mərtəbəsi Giriş (Tam düymə)Göstərilən düymədən daha kiçik olan ən böyük açarın açar dəyər eşlemesini qaytarıraçar - axtarış açarı
Tamsayı floorKey (Tam düymə)Göstərilən düymədən az və ya bərabər olan ən böyük açarı qaytarıraçar - axtarış açarı
void forEach (İstehlakçı hərəkəti)Xəritədəki hər giriş üçün göstərilən əməliyyatı həyata keçirirfəaliyyət - hər girişdə ediləcək hərəkət
String get (obyekt açarı)Xəritədə göstərilən düymə ilə əlaqəli dəyəri qaytarıraçar - axtarış açarı
String getOrDefault (Nəzarət açarı, String defaultValue)Göstərilən düymə ilə əlaqəli dəyəri qaytarır, əks halda mövcud deyilsə, standart sətri qaytarıraçar - axtarış açarı
defaultValue - açar tapılmadıqda standart dəyər
SortMap headMap (Integer toKey)Xəritənin açarı göstərilən toKey-dən çox az olan bir görünüş hissəsini qaytarırtoKey - axtarış açarı
Gəzinti başlığı (İnteger toKey, Boolean daxil olmaqla)Xəritənin açarı qətiliklə göstərilən toKey-dən az və ya bərabər olan bir baxış hissəsini qaytarır
Giriş aliKey (Tam düymə)Göstərilən düymədən böyük və ya ona bərabər olan ən kiçik düymənin xəritəsini qaytarıraçar - axtarış açarı
Tamsayı daha yüksəkKey (Tam düymə)Göstərilən düymədən böyük və ya bərabər olan ən kiçik açarı qaytarıraçar - axtarış açarı
Boole isEmpty ()Xəritənin boş olub olmadığını yoxlayır
KeySet () seçinXəritədəki düymələrin müəyyən bir görünüşünü qaytarır
Giriş sonEntry ()Xəritədəki ən böyük açarın uyğunlaşdırılmasını qaytarır
Tamsayı lastKey ()Xəritədəki ən böyük açarı qaytarır
Giriş aşağıEntry (Tam düymə)Ən böyük açarın açar dəyərini göstərilən düymədən az qaytarıraçar - axtarış açarı
Tamsayı altKey (Tam düymə)Ən böyük açarı göstərilən düymədən az qaytarıraçar - axtarış açarı
NavigableSet navigableKeySet ()Xəritədə olan düymələrin NavigableSet görünüşünü qaytarır
Giriş sorğusuFirstEntry ()Xəritədəki ən kiçik düymənin xəritəsini silir və qaytarır
Giriş sorğusuLastEntry ()Xəritədəki ən yüksək düymənin xəritəsini silir və qaytarır
String put (Tam düymə, String dəyəri)Xəritədə açar dəyər eşleme əlavə ediraçar - daxil etmək üçün açar
dəyər - açarla əlaqəli dəyər
boşluqHamısı (Xəritə m)Xəritədə göstərilən girişlərin bütün uyğunlaşdırılmasını qoyurm - xəritə girişləri
Simli silmək (Nişan açarı)Müəyyən edilmiş düymə üçün uyğunluğu siliraçar - silinəcək düymə
Mantiqi silmək (Nesne açarı, Nesne dəyəri)Hər hansı bir dəyərə uyğunlaşdırıldığı təqdirdə göstərilən düymənin girişini siliraçar - silinəcək düymə
dəyər - açarla əlaqəli dəyər
String əvəz (Tam düymə, String dəyəri)Müəyyən edilmiş düymə üçün uyğunluğu yalnız müəyyən bir dəyərə uyğunlaşdırıldıqda dəyişdiriraçar - axtarış açarı
dəyər - dəyişdiriləcək dəyər
boolean əvəz (Tam düymə, String oldValue, String newValue)Müəyyən edilmiş düymə üçün uyğunluğu yalnız müəyyən bir dəyərə uyğunlaşdırıldıqda dəyişdiriraçar - axtarış açarı
oldValue - açarın dəyəri
newValue - dəyişdiriləcək dəyər
void replaceAll (BiFunction funksiyası)Hər giriş üçün dəyəri funksiyanın çıxışı ilə əvəz edirfunksiya - dəyəri hesablamaq funksiyası
int ölçüsü ()Düymələrin və girişlərin sayını göstərən xəritənin ölçüsünü qaytarır
SortMap alt xəritəsi (Tamdan, Tamdan toKeyə)Düymələri fromKey daxil olmaqla toKey exclusive arasında dəyişən xəritənin hissəsinin görünüşünü qaytarırfromKey - başlanğıc aralığı (daxil olmaqla)
toKey - bitən açar sıra (müstəsna)
NavigableMap alt xəritəsi (Inteqlidən inteqer, İnklüzivdən boolean, Integer toKey, boolean toInclusive)Düymələri fromKey-dən toKey-ə qədər olan xəritənin hissəsinin görünüşünü qaytarır fromKey - açar aralığı başlayır
fromInclusive - fromKey düyməsini daxil etməyi bildirir
toKey - açar aralığın bitməsi
toInclusive - toKey düyməsini daxil etməyi bildirir
Sıralanmış xəritənin arxa xəritəsi (Key-dən tam say)Düymələri fromKeydən daha böyük olan xəritənin görünüş hissəsini qaytarırfromKey - başlanğıc açarı
NavigableMap tailMap (Key-dən tam, boolean daxil olmaqla)Düymələri fromKey düyməsindən böyük və ya bərabər olan xəritənin görünüş hissəsini qaytarırfromKey - başlanğıc açarı
daxil olmaqla - düymədən aralığa daxil edilməli olduqda bildirir
Kolleksiya dəyərləri ()Dəyərlərin kolleksiya görünüşünü qaytarır
String toString ()Xəritənin bir simli təsvirini qaytarır

Nümunə: TreeMap-ə elementlər əlavə edin

Aşağıda istifadə edərək TreeMap-ə elementlər əlavə etməyi göstərən nümunədir put() metod. Daha əvvəl gördüyümüz kimi, TreeMap düymələri əsas götürərək girişləri təbii çeşidləmə qaydasında göstərir.

import java.util.TreeMap;
public class TreeMapDemo {

  public static void main(String[] args) {
    TreeMap<Integer, String> tm = new TreeMap<Integer, String>();
    tm.put(111, "Aditya");
    tm.put(333, "Bharat");
    tm.put(222, "Dev");
    tm.put(555, "Hari");
    tm.put(444, "Charan");
    
    
    System.out.println(tm.toString());
  }

}
{111=Aditya, 222=Dev, 333=Bharat, 444=Charan, 555=Hari}

Nümunə: TreeMap-dən girişləri əldə edin

Aşağıdakı nümunədə göstərilən düymə ilə müqayisədə müxtəlif girişləri necə götürə biləcəyimizi görə bilərik.

import java.util.Map.Entry;
import java.util.TreeMap;

public class RetrieveTreeMapEntries {

  public static void main(String[] args) {
    TreeMap<Integer, String> tm = new TreeMap<Integer, String>();
    tm.put(111, "Aditya");
    tm.put(333, "Bharat");
    tm.put(222, "Dev");
    tm.put(555, "Hari");
    tm.put(444, "Charan");
    Entry<Integer,String> eceiling = tm.ceilingEntry(222);
    System.out.println("Ceiling Entry: " + eceiling.getKey() + " " + eceiling.getValue());
    Entry<Integer,String> efloor = tm.floorEntry(222);
    System.out.println("Floor Entry: " + efloor.getKey() + " " + efloor.getValue());
    Entry<Integer,String> efirst = tm.firstEntry();
    System.out.println("First Entry: " + efirst.getKey() + " " + efirst.getValue());	
    Entry<Integer,String> elast = tm.lastEntry();
    System.out.println("Last Entry: " + elast.getKey() + " " + elast.getValue());	
    Entry<Integer,String> ehigh = tm.higherEntry(222);
    System.out.println("Higher Entry: " + ehigh.getKey() + " " + ehigh.getValue());
    Entry<Integer,String>elower = tm.lowerEntry(222);
    System.out.println("Lower Entry: " + elower.getKey() + " " + elower.getValue());
  }

}
Ceiling Entry: 222 Dev
Floor Entry: 222 Dev
First Entry: 111 Aditya
Last Entry: 555 Hari
Higher Entry: 333 Bharat
Lower Entry: 111 Aditya

Nümunə: Java TreeMap-də açarları alın

Aşağıdakı nümunə, göstərilən düymə ilə müqayisədə Java TreeMap-dən açarları necə alacağınızı göstərir.

import java.util.TreeMap;
import java.util.Map.Entry;

public class RetrieveTreeMapKeys {

  public static void main(String[] args) {
    TreeMap<Integer, String> tm = new TreeMap<Integer, String>();
    tm.put(111, "Aditya");
    tm.put(333, "Bharat");
    tm.put(222, "Dev");
    tm.put(555, "Hari");
    tm.put(444, "Charan");
    
    System.out.println("Ceiling Key: " + tm.ceilingKey(222));
    System.out.println("Floor Key: " + tm.floorKey(222));
    System.out.println("First Key: " + tm.firstKey());
    System.out.println("Last Key: " + tm.lastKey());	
    System.out.println("Higher Key: " + tm.higherKey(222));
    System.out.println("Lower Key: " + tm.lowerKey(222));
   
  }

}
Ceiling Key: 222
Floor Key: 222
First Key: 111
Last Key: 555
Higher Key: 333
Lower Key: 111

Nümunə: Girişləri Java TreeMap-dən silin

Aşağıdakı nümunə TreeMap-dan girişləri remove() metod. Ayrıca, ilk və son girişləri pollFirstEntry()pollLastEntry() üsulları.

import java.util.TreeMap;

public class RemoveEntriesTreeMap {

  public static void main(String[] args) {
    TreeMap<Integer, String> tm = new TreeMap<Integer, String>();
    tm.put(111, "Aditya");
    tm.put(333, "Bharat");
    tm.put(222, "Dev");
    tm.put(555, "Hari");
    tm.put(444, "Charan");
    
    System.out.println("Poll First Entry: " + tm.pollFirstEntry());
    System.out.println("Poll Last Entry: " + tm.pollLastEntry());
    
    System.out.println("Remove Key 222: " + tm.remove(222));
    System.out.println("Remove Entry 333: " + tm.remove(333, "Bharat"));
    
    System.out.println("Entries in the TreeMap after remove operation: " + tm);

  }

}
Poll First Entry: 111=Aditya
Poll Last Entry: 555=Hari
Remove Key 222: Dev
Remove Entry 333: true
Entries in the TreeMap after remove operation: {444=Charan}

Nümunə: Java TreeMap-dən açar dəyəri yoxlayın və alın

Aşağıdakı nümunə, bir xəritə xəritəsində verilən düyməni və ya dəyəri ehtiva edib-etmədiyini necə yoxlayacağını göstərir containsKey()containsValue() metod. -Dən istifadə edərək müəyyən bir dəyər əldə edə bilərik get() or getOrDefault()və istifadə edərək bütün dəyərləri əldə edin values() metodu.

 import java.util.TreeMap;

public class TreeMapContains {

  public static void main(String[] args) {
    TreeMap<Integer, String> tm = new TreeMap<Integer, String>();
    tm.put(111, "Aditya");
    tm.put(333, "Bharat");
    tm.put(222, "Dev");
    tm.put(555, "Hari");
    tm.put(444, "Charan");
    
    System.out.println("Contains key: " + tm.containsKey(333));
    System.out.println("Contains key: " + tm.containsKey(123));
    System.out.println("Contains Value: " + tm.containsValue("Dev"));
    System.out.println("Contains Value: " + tm.containsValue("aaa"));
    System.out.println("Get: " + tm.get(555));
    System.out.println("Get or default: " + tm.getOrDefault(444, "Test"));
    System.out.println("Get or default: " + tm.getOrDefault(123, "Test"));
    System.out.println("Values: " + tm.values());

  }

}
Contains key: true
Contains key: false
Contains Value: true
Contains Value: false
Get: Hari
Get or default: Charan
Get or default: Test
Values: [Aditya, Dev, Bharat, Charan, Hari]

Misal: azalan çeşidləmə

TreeMap, məlumatları standart olaraq düymələrin artma sırasına görə sıralayır. Ancaq bunları istifadə edərək azalan sırada sıralaya bilərik descendingKeySet() düymələri tərs qaydada sıralamaq və descendingMap() açar dəyər cütlərini tərs qaydada sıralamaq.

import java.util.TreeMap;

public class DescendingTreeMap {

  public static void main(String[] args) {
    TreeMap<Integer, String> tm = new TreeMap<Integer, String>();
    tm.put(111, "Aditya");
    tm.put(333, "Bharat");
    tm.put(222, "Dev");
    tm.put(555, "Hari");
    tm.put(444, "Charan");
    
    System.out.println(tm.descendingKeySet());
    System.out.println(tm.descendingMap());

  }

}
[555, 444, 333, 222, 111]
{555=Hari, 444=Charan, 333=Bharat, 222=Dev, 111=Aditya}

Misal: Java TreeMap vasitəsilə təkrarlayın

İstifadə edərək TreeMap-dəki bütün girişləri təkrarlaya bilərik entrySet() metod. Yalnız düymələri əldə etmək üçün ya istifadə edə bilərik keySet() metod və ya navigableKeySet() metodu.

import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.TreeMap;

public class IterateTreeMap {

  public static void main(String[] args) {
    TreeMap<Integer, String> tm = new TreeMap<Integer, String>();
    tm.put(111, "Aditya");
    tm.put(333, "Bharat");
    tm.put(222, "Dev");
    tm.put(555, "Hari");
    tm.put(444, "Charan");
    
    System.out.println("Iterate using Entry Set:");
    for(Map.Entry<Integer,String> m: tm.entrySet())
      System.out.println(m.getKey() + " " + m.getValue());
    
    System.out.println("Iterate using KeySet: ");
    for(Integer i: tm.keySet())
      System.out.println(i + " " + tm.get(i));
    
    System.out.println("Iterate through NavigableKeySet: ");
    System.out.println(tm.navigableKeySet());
    
  }

}
Iterate using Entry Set:
111 Aditya
222 Dev
333 Bharat
444 Charan
555 Hari
Iterate using KeySet: 
111 Aditya
222 Dev
333 Bharat
444 Charan
555 Hari
Iterate through NavigableKeySet: 
[111, 222, 333, 444, 555]

Nümunə: Java TreeMap-in headMap, subMap və tailMap metodları

Aşağıda verilmiş TreeMap xəritəsinin bir hissəsini almaq üçün nümunə verilmişdir. Nə zaman istifadə edirik headMap() üsul, başlanğıcdan göstərilən düyməyə qədər bütün girişləri alır. The tailMap()metod göstərilən düymədən xəritənin sonuna qədər bütün girişləri götürür. Xəritəçəkmə girişlərinin bir hissəsini almaq üçün istifadə edirik subMap() girişləri göstərilən başlanğıcdan son aralığa qaytaran metod.

import java.util.TreeMap;

public class TreeMapMethods {

  public static void main(String[] args) {
    TreeMap<Integer, String> tm = new TreeMap<Integer, String>();
    tm.put(111, "Aditya");
    tm.put(333, "Bharat");
    tm.put(222, "Dev");
    tm.put(555, "Hari");
    tm.put(444, "Charan");
    
    System.out.println("Output of headMap method:");
    System.out.println(tm.headMap(333));
    System.out.println(tm.headMap(333, true));
    System.out.println(tm.headMap(333, false));
    
    System.out.println("Output of tailMap method: ");
    System.out.println(tm.tailMap(333));
    System.out.println(tm.tailMap(333, true));
    System.out.println(tm.tailMap(333, false));
    
    System.out.println("Output of subMap method: ");
    System.out.println(tm.subMap(222, 444));
    System.out.println(tm.subMap(222, true, 444, true));
    System.out.println(tm.subMap(222, false, 444, false));
    System.out.println(tm.subMap(222, false, 444, true));
    System.out.println(tm.subMap(222, true, 444, false));

  }

}
Output of headMap method:
{111=Aditya, 222=Dev}
{111=Aditya, 222=Dev, 333=Bharat}
{111=Aditya, 222=Dev}
Output of tailMap method: 
{333=Bharat, 444=Charan, 555=Hari}
{333=Bharat, 444=Charan, 555=Hari}
{444=Charan, 555=Hari}
Output of subMap method: 
{222=Dev, 333=Bharat}
{222=Dev, 333=Bharat, 444=Charan}
{333=Bharat}
{333=Bharat, 444=Charan}
{222=Dev, 333=Bharat}

Nümunə: Java TreeMap-də dəyərləri dəyişdirin

Java istifadəçi xəritəsində müəyyən bir dəyəri replace() metod. Göstərilən düymə tapılmadıqda, dəyəri əvəz etmir və ifadəni laqeyd edir.

import java.util.TreeMap;

public class ReplaceTreeMap {

  public static void main(String[] args) {
    TreeMap<Integer, String> tm = new TreeMap<Integer, String>();
    tm.put(111, "Aditya");
    tm.put(333, "Bharat");
    tm.put(222, "Dev");
    tm.put(555, "Hari");
    tm.put(444, "Charan");
    
    tm.replace(333, "Banu");
    tm.replace(444, "Charan", "Chandru");
    tm.replace(123, "Test");
    System.out.println("Values after replace method: \n" + tm);

  }

}
Values after replace method: 
{111=Aditya, 222=Dev, 333=Banu, 444=Chandru, 555=Hari}

Java-da TreeMap və HashMap arasındakı fərq

Ağac xəritəsiHashMap
Artan qaydanı saxlayırHeç bir qayda saxlamır
Null düymə ola bilməzBir sıfır düymə ola bilər
Ağac quruluşuna əsaslanan bir tətbiqdirHashtable əsaslı bir tətbiqdir
Boş dəyərlərə icazə vermirÇox null dəyərlərə imkan verir
Çeşidləmə daha yavaş olurÇeşidləmə daha sürətli olur
Qırmızı-qara ağac məlumat quruluşundan istifadə edirHashtable məlumat quruluşundan istifadə edir

arayış

Şərh yaz

Translate »
1