在 Java TreeMap 中查找元素的位置
在 Java 中,TreeMap 类提供了一种以排序方式存储键值集的有效方法。有时,我们可能需要发现 TreeMap 中特定元素的位置。在本文中,我们将研究完成此任务的不同方法。我们将讨论语法、计算,并为每种方法提供可执行的代码示例。
语法
要查找 Java TreeMap 中元素的位置,我们可以使用以下语法 -
int position = Collections.binarySearch(treeMap.values(), element);
语法说明
Collections.binarySearch() 策略用于对排序列表执行双重查找。在我们的例子中,我们将 TreeMap 的值传递给策略和我们需要发现其位置的组件。如果在列表中找到组件,则策略返回组件列表,否则返回负值。
方法 1:使用 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 添加到位置变量来打印其位置。否则,我们将显示组件未显示在 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 并用键值集填充它。我们定义需要查找的元素,在本例中为"香蕉"。然后,我们使用 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
解释
与方法 2 类似,我们创建一个 TreeMap,填充它,并定义我们要查找的元素。然后,我们使用 for-each 循环选中 TreeMap 的节,并检查每个节的值是否与元素匹配。如果找到坐标,我们将比较键存储在位置变量中。最后,我们检查位置是否无效,以确定元素是否显示在 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 参考教程 - 该教程包含有关 java 的更多信息:https://www.cainiaomax.com/java/

