查詢 Java TreeMap 中元素的位置


在 Java 中,TreeMap 類提供了一種高效的方式來儲存排序的鍵值對。有時,我們可能需要查詢 TreeMap 中特定元素的位置。在這篇文章中,我們將探討實現此任務的不同方法。我們將討論語法、演算法,併為每種方法提供可執行的程式碼示例。

語法

要查詢 Java TreeMap 中元素的位置,可以使用以下語法:

int position = Collections.binarySearch(treeMap.values(), element);

語法解釋

Collections.binarySearch() 方法用於對排序列表執行二分查詢。在我們的例子中,我們將 TreeMap 的值和需要查詢位置的元素傳遞給該方法。如果元素在列表中找到,該方法將返回元素的索引;否則,返回負值。

方法一:使用 binarySearch()

演算法

  • 使用 values() 方法獲取 TreeMap 的值。

  • 使用 Collections.binarySearch() 對值執行二分查詢。

  • 將結果儲存在名為 position 的變數中。

  • 如果 position 大於或等於 0,則找到該元素。否則,該元素不存在於 TreeMap 中。

示例

import java.util.Collections;
import java.util.TreeMap;

public class TreeMapPositionFinder {
   public static void main(String[] args) {
      TreeMap<Integer, String> treeMap = new TreeMap<>();
      treeMap.put(1, "Apple");
      treeMap.put(2, "Banana");
      treeMap.put(3, "Orange");
      treeMap.put(4, "Mango");

      String element = "Banana";

      int position = Collections.binarySearch(treeMap.values(), element);

      if (position >= 0) {
         System.out.println("Element found at position: " + (position + 1));
      } else {
         System.out.println("Element not found in the TreeMap.");
      }
   }
}

解釋

在這種方法中,我們建立一個 TreeMap 並用一些鍵值對填充它。然後,我們定義需要查詢的元素,在本例中為“Banana”。Collections.binarySearch() 方法用於在 TreeMap 的值中搜索該元素。如果找到該元素,我們將透過將 1 加到 position 變數來列印其位置。否則,我們顯示該元素不存在於 TreeMap 中。

方法二:使用 TreeMap 的 keySet() 和 get() 方法

演算法

  • 使用 keySet() 方法獲取 TreeMap 的 keySet。

  • 迭代鍵。

  • 檢查與每個鍵關聯的值是否等於我們要查詢的元素。

  • 如果找到匹配項,則將相應的鍵儲存在名為 position 的變數中。

  • 如果 position 不為空,則找到該元素。否則,該元素不存在於 TreeMap 中。

示例

import java.util.TreeMap;

public class TreeMapPositionFinder {
   public static void main(String[] args) {
      TreeMap<Integer, String> treeMap = new TreeMap<>();
      treeMap.put(1, "Apple");
      treeMap.put(2, "Banana");
      treeMap.put(3, "Orange");
      treeMap.put(4, "Mango");

      String element = "Banana";
      Integer position = null;

      for (Integer key : treeMap.keySet()) {
         if (treeMap.get(key).equals(element)) {
            position = key;
            break;
         }
      }

      if (position != null) {
         System.out.println("Element found at position: " + position);
      } else {
         System.out.println("Element not found in the TreeMap.");
      }
   }
}

輸出

Element found at position: 2

解釋

在這種方法中,我們再次建立一個 TreeMap 並用鍵值對填充它。我們定義需要查詢的元素,在本例中為“Banana”。然後,我們使用 for-each 迴圈迭代鍵,並檢查與每個鍵關聯的值是否與我們正在查詢的元素匹配。如果找到匹配項,我們將相應的鍵儲存在 position 變數中。最後,我們檢查 position 是否不為空,以確定該元素是否存在於 TreeMap 中。

方法三:使用 TreeMap 的 entrySet() 和 getValue() 方法

演算法

  • 使用 entrySet() 方法獲取 TreeMap 的 entrySet。

  • 迭代條目。

  • 檢查每個條目的值是否等於我們要查詢的元素。

  • 如果找到匹配項,則將相應的鍵儲存在名為 position 的變數中。

  • 如果 position 不為空,則找到該元素。否則,該元素不存在於 TreeMap 中。

示例

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

public class TreeMapPositionFinder {
   public static void main(String[] args) {
      TreeMap<Integer, String> treeMap = new TreeMap<>();
      treeMap.put(1, "Apple");
      treeMap.put(2, "Banana");
      treeMap.put(3, "Orange");
      treeMap.put(4, "Mango");

      String element = "Banana";
      Integer position = null;

      for (Map.Entry<Integer, String> entry : treeMap.entrySet()) {
         if (entry.getValue().equals(element)) {
            position = entry.getKey();
            break;
         }
      }

      if (position != null) {
         System.out.println("Element found at position: " + position);
      } else {
         System.out.println("Element not found in the TreeMap.");
      }
   }
}

輸出

Element found at position: 2

解釋

與方法 2 相同,我們建立一個 TreeMap,填充它,並定義需要查詢的元素。然後,我們使用 for-each 迴圈迭代 TreeMap 的條目,並檢查每個條目的值是否與該元素匹配。如果找到匹配項,我們將相應的鍵儲存在 position 變數中。最後,我們檢查 position 是否不為空,以確定該元素是否存在於 TreeMap 中。

方法四:使用 TreeMap 的 values() 方法和 indexOf()

演算法

  • 使用 values() 方法獲取 TreeMap 的值。

  • 使用 indexOf() 方法查詢元素的索引。

  • 如果索引大於或等於 0,則找到該元素。否則,該元素不存在於 TreeMap 中。

示例

import java.util.ArrayList;
import java.util.TreeMap;

public class TreeMapPositionFinder {
   public static void main(String[] args) {
      TreeMap<Integer, String> treeMap = new TreeMap<>();
      treeMap.put(1, "Apple");
      treeMap.put(2, "Banana");
      treeMap.put(3, "Orange");
      treeMap.put(4, "Mango");

      String element = "Mango";

      ArrayList<String> values = new ArrayList<>(treeMap.values());
      int position = values.indexOf(element);

      if (position >= 0) {
         System.out.println("Element found at position: " + (position + 1));
      } else {
         System.out.println("Element not found in the TreeMap.");
      }
   }
}

輸出

Element found at position: 4

解釋

在這種方法中,我們首先建立一個 TreeMap 並填充它。我們定義需要查詢的元素,在本例中為“Banana”。然後,我們使用 values() 方法建立一個包含 TreeMap 值的 ArrayList。我們使用 indexOf() 方法在 ArrayList 中查詢該元素的索引。如果索引大於或等於 0,我們列印該元素的位置。否則,我們指示該元素不存在於 TreeMap 中。

結論

在這篇文章中,我們探討了查詢 Java TreeMap 中元素位置的不同方法。我們檢查了語法、演算法,併為每種方法提供了可執行的程式碼示例。根據您的具體需求和偏好,您可以選擇最適合您需求的方法。Java 中的 TreeMap 類提供了一種強大且高效的方式來儲存和管理排序資料,允許您輕鬆執行各種操作。

更新於:2023年7月31日

瀏覽量:493

啟動您的 職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.