首頁  >  文章  >  Java  >  在Java TreeMap中尋找元素的位置

在Java TreeMap中尋找元素的位置

王林
王林轉載
2023-08-24 17:05:021068瀏覽

在Java TreeMap中查找元素的位置

在Java中,TreeMap類別提供了以有序方式儲存鍵值對的有效方法。有時候,我們可能需要找出TreeMap中特定元素的位置。在本文中,我們將探討不同的方法來完成這個任務。我們將討論語法、演算法,並為每種方法提供可執行的程式碼範例。

文法

要在Java TreeMap中找到元素的位置,我們可以使用以下語法 -

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

語法解釋

Collections.binarySearch()策略被用來對排序清單進行二分查找。在我們的情況下,我們將TreeMap的值傳遞給策略,並傳遞需要尋找位置的元件。如果在清單中找到該元件,則策略會傳回組件的位置,否則傳回一個負值。

方法一:使用binarySearch()

演算法

  • 使用values()方法從TreeMap取得值。

  • 使用Collections.binarySearch()對值進行二分搜尋。

  • 將結果儲存在名為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來列印其位置。否則,我們顯示該元素未顯示在TreeMap中。

方法2:使用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循環遍歷鍵,並檢查與每個鍵相關聯的值是否與我們要尋找的元素相符。如果找到匹配項,我們將對應的鍵儲存在位置變數中。最後,我們檢查位置是否無效,以確定元素是否顯示在TreeMap中。

方法3:使用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

解釋

與第二種方法類似,我們建立一個TreeMap,填滿它,並描述我們需要發現的元件。然後,我們使用for-each循環強調TreeMap的條目,並檢查每個條目的值是否與元件相符。如果找到匹配項,我們將對應的鍵儲存在position變數中。最後,我們檢查position是否無效,以確定元件是否顯示在TreeMap中。

方法4:使用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課程提供了一種強大而高效的方式來儲存和操作排序數據,使您能夠輕鬆執行各種操作。

以上是在Java TreeMap中尋找元素的位置的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除