用示例在 Java 中导航地图界面
原文:https://www . geesforgeks . org/naviglambap-interface-in-Java-with-example/
导航地图界面是 Java 收集框架的成员。它属于 java.util 包,是 SortedMap 的扩展,提供了 lowerKey、floorKey、ceilingKey、higherKey 等便捷的导航方式,与这种流行的导航方式一起。它还提供了从 Java 中的现有映射创建子映射的方法,例如键小于指定键的头映射,键大于指定键的尾映射,以及严格包含介于 toKey 和 fromKey 之间的键的子映射。 实现导航地图的一个示例类是树形图。
申报:
public interface NavigableMap<K,V> extends SortedMap<K,V>
这里 K 为关键对象类型, V 为值对象类型。
导航层次图
实现映射< K,V>T1, SortedMap < K,V>T3】接口。ConcurrentNavigableMap 扩展 NavigableMap。ConcurrentSkipListMap树形图实现导航地图。
示例:
Java 语言(一种计算机语言,尤用于创建网站)
// Java program to demonstrate
// the NavigableMap interface
import java.util.NavigableMap;
import java.util.TreeMap;
public class NavigableMapExample {
public static void main(String[] args)
{
// Instantiate an object
// Since NavigableMap
// is an interface so we
// use TreeMap
NavigableMap<String, Integer> nm
= new TreeMap<String, Integer>();
// Add elements using put() method
nm.put("C", 888);
nm.put("Y", 999);
nm.put("A", 444);
nm.put("T", 555);
nm.put("B", 666);
nm.put("A", 555);
// Print the contents on the console
System.out.println("Mappings of NavigableMap : "
+ nm);
System.out.printf("Descending Set : %s%n",
nm.descendingKeySet());
System.out.printf("Floor Entry : %s%n",
nm.floorEntry("L"));
System.out.printf("First Entry : %s%n",
nm.firstEntry());
System.out.printf("Last Key : %s%n", nm.lastKey());
System.out.printf("First Key : %s%n",
nm.firstKey());
System.out.printf("Original Map : %s%n", nm);
System.out.printf("Reverse Map : %s%n",
nm.descendingMap());
}
}
输出:
Mappings of NavigableMap : {A=555, B=666, C=888, T=555, Y=999}
Descending Set : [Y, T, C, B, A]
Floor Entry : C=888
First Entry : A=555
Last Key : Y
First Key : A
Original Map : {A=555, B=666, C=888, T=555, Y=999}
Reverse Map : {Y=999, T=555, C=888, B=666, A=555}
实现类
导航地图有两个实现类,分别是 ConcurrentSkipListMap 和 TreeMap 。树状图是一个基于红黑树的导航地图实现,它根据其键的自然顺序进行排序,或者通过地图创建时提供的比较器进行排序,具体取决于使用的构造函数。TreeMap 具有用于插入、删除和访问操作的日志(n) 的预期时间成本。TreeMap 不同步,必须在外部完成。
语法:
NavigableMap<K, V> objectName = new TreeMap<K, V>();
导航地图的基本操作
1。添加元素
要向导航地图添加元素,我们可以使用地图界面的任何方法。下面的代码展示了如何使用它们。您可以在代码中观察到插入顺序没有被保留。如果在构建时没有提供比较器,则遵循自然顺序。
Java 语言(一种计算机语言,尤用于创建网站)
// Java program for adding elements
// to a NavigableMap
import java.util.*;
class AddingElementsExample {
public static void main(String args[])
{
// Instantiate an object
// Since NavigableMap is an interface
// We use TreeMap
NavigableMap<Integer, String> nmap
= new TreeMap<Integer, String>();
// Add elements using put()
nmap.put(3, "Geeks");
nmap.put(2, "For");
nmap.put(1, "Geeks");
// Print the contents on the console
System.out.println("Mappings of NavigableMap : "
+ nmap);
}
}
输出:
Mappings of NavigableMap : {1=Geeks, 2=For, 3=Geeks}
2。拆卸元件
为了移除元素,我们也使用地图接口的方法,因为导航地图是地图的后代。我们可以使用 remove() 方法,该方法获取键值,并从该树图中移除键值的映射(如果该映射存在于地图上的话)。我们可以使用清除()来移除地图的所有元素。
Java 语言(一种计算机语言,尤用于创建网站)
// Java Program for deleting
// elements from NavigableMap
import java.util.*;
class RemovingElementsExample {
public static void main(String args[])
{
// Instantiate an object
// Since NavigableMap
// is an interface
// We use TreeMap
NavigableMap<Integer, String> nmap
= new TreeMap<Integer, String>();
// Add elements using put()
nmap.put(3, "Geeks");
nmap.put(2, "Geeks");
nmap.put(1, "Geeks");
nmap.put(4, "For");
// Print the contents on the console
System.out.println("Mappings of NavigableMap : "
+ nmap);
// Remove elements using remove()
nmap.remove(4);
// Print the contents on the console
System.out.println(
"\nNavigableMap, after remove operation : "
+ nmap);
// Clear the entire map using clear()
nmap.clear();
System.out.println(
"\nNavigableMap, after clear operation : "
+ nmap);
}
}
输出:
Mappings of NavigableMap : {1=Geeks, 2=Geeks, 3=Geeks, 4=For}
NavigableMap, after remove operation : {1=Geeks, 2=Geeks, 3=Geeks}
NavigableMap, after clear operation : {}
3。访问元素
我们可以使用 get()方法来访问一个 NavigableMap 的元素,下面给出了这个例子。
Java 语言(一种计算机语言,尤用于创建网站)
// Java Program for accessing
// elements in a NavigableMap
import java.util.*;
public class AccessingElementsExample {
public static void main(String[] args)
{
// Instantiate an object
// Since NavigableMap is an interface
// We use TreeMap
NavigableMap<Integer, String> nmap
= new TreeMap<Integer, String>();
// Add elements using put()
nmap.put(8, "Third");
nmap.put(6, "Second");
nmap.put(3, "First");
nmap.put(11, "Fourth");
// Accessing the elements using get()
// with key as a parameter
System.out.println(nmap.get(3));
System.out.println(nmap.get(6));
System.out.println(nmap.get(8));
System.out.println(nmap.get(11));
// Display the set of keys using keySet()
System.out.println("\nThe NavigableMap key set: "
+ nmap.keySet());
}
}
输出:
First
Second
Third
Fourth
The NavigableMap key set: [3, 6, 8, 11]
4。穿越
我们可以使用迭代器接口遍历集合框架的任何结构。因为迭代器处理一种类型的数据,所以我们使用条目<?, ?>将两个独立的类型解析为兼容的格式。然后使用 next()方法打印导航地图的元素。另一个著名的方法是对每个循环使用一个并获得钥匙。使用 getValue()方法可以找到该键的值。
Java 语言(一种计算机语言,尤用于创建网站)
// Java Program for traversing
// a NavigableMap
import java.util.*;
class TraversalExample {
public static void main(String args[])
{
// Instantiate an object
// Since NavigableMap is an interface
// We use TreeMap
NavigableMap<Integer, String> nmap
= new TreeMap<Integer, String>();
// Add elements using put()
nmap.put(3, "Geeks");
nmap.put(2, "For");
nmap.put(1, "Geeks");
// Create an Iterator over the
// NavigableMap
Iterator<NavigableMap.Entry<Integer, String> > itr
= nmap.entrySet().iterator();
System.out.println("Traversing using Iterator: ");
// The hasNext() method is used to check if there is
// a next element The next() method is used to
// retrieve the next element
while (itr.hasNext()) {
NavigableMap.Entry<Integer, String> entry
= itr.next();
System.out.println("Key = " + entry.getKey()
+ ", Value = "
+ entry.getValue());
}
System.out.println("Traversing using for-each: ");
// Iterate using for-each loop
for (Map.Entry mapElement : nmap.entrySet()) {
// get the key using getKey()
int key = (int)mapElement.getKey();
// Finding the value
String value = (String)mapElement.getValue();
System.out.println("Key = " + key
+ ", Value = " + value);
}
}
}
输出:
Traversing using Iterator:
Key = 1, Value = Geeks
Key = 2, Value = For
Key = 3, Value = Geeks
Traversing using for-each:
Key = 1, Value = Geeks
Key = 2, Value = For
Key = 3, Value = Geeks
注意:每次我们说‘naviglamblemap 的元素’的时候,必须注意的是,元素实际上是存储在 naviglamblemap 的实现类的对象中的,在本例中是 TreeMap。
导航方法地图
导航地图继承了地图界面、排序地图界面的方法。父接口给出了添加元素、移除元素和遍历的基本方法。下表给出了导航地图的方法。在这里,
- K–地图中按键的类型。
- V–映射图中映射的值的类型。
从接口 java.util.SortedMap 继承的方法
| 方法 | 描述 | | --- | --- | | [比较器()](https://www.geeksforgeeks.org/sortedmap-comparator-method-in-java-with-examples/) | 返回用于对该映射中的键进行排序的比较器,如果该映射使用其键的自然排序,则返回 null。 | | [输入 ySet()](https://www.geeksforgeeks.org/sortedmap-entryset-method-in-java-with-examples/) | 返回此映射中包含的映射的集合视图。 | | [firstKey()](https://www.geeksforgeeks.org/sortedmap-firstkey-method-in-java/) | 返回当前地图中的第一个(最低的)键。 | | [键集()](https://www.geeksforgeeks.org/sortedmap-keyset-method-in-java-with-examples/) | 返回此地图中包含的键的集合视图。 | | [负载力()](https://www.geeksforgeeks.org/sortedmap-lastkey-method-in-java/) | 返回当前地图中的最后一个(最高的)键。 | | [值()](https://www.geeksforgeeks.org/sortedmap-values-method-in-java-with-examples/#:~:text=The%20values()%20method%20of,the%20values%20in%20the%20Map.&text=Parameters%3A%20The%20method%20does%20not%20accept%20any%20parameters.) | 返回此地图中包含的值的集合视图。 |从接口 java.util.Map 继承的方法
| 方法 | 描述 | | --- | --- | | [晴()](https://www.geeksforgeeks.org/map-clear-method-in-java-with-example/) | 从此映射中移除所有映射(可选操作)。 | | 计算(K 键,双功能v,?扩展 V > remappingFunction) | 尝试计算指定键及其当前映射值的映射(如果没有当前映射,则为空)。 | | 计算不存在(K 键,函数扩展 V >映射函数) | 如果指定的键尚未与值相关联(或映射为 null),会尝试使用给定的映射函数计算其值,并将其输入到此映射中,除非为 null。 | | 计算当前(K 键,双功能 super K,? super V,? extends V>恢复功能) | 如果指定键的值存在且不为空,将尝试计算给定键及其当前映射值的新映射。 | | [包含键(对象键)](https://www.geeksforgeeks.org/map-containskey-method-in-java-with-examples/) | 如果此映射包含指定键的映射,则返回 true。 | | [包含值(对象值)](https://www.geeksforgeeks.org/map-containsvalue-method-in-java-with-examples/) | 如果此映射将一个或多个键映射到指定值,则返回 true。 | | [等于(对象 o)](https://www.geeksforgeeks.org/map-equals-method-in-java-with-examples/#:~:text=Map.,of%20this%20map%20or%20not.) | 将指定的对象与此映射进行比较,看是否相等。 | | forEach(双消费者〔t0〕行动) | 对此映射中的每个条目执行给定的操作,直到所有条目都已处理完毕或该操作引发异常。 | | [获取(对象键)](https://www.geeksforgeeks.org/map-get-method-in-java-with-examples/) | 返回指定键映射到的值,如果此映射不包含键映射,则返回 null。 | | getOrDefault(Object key, V defaultValue) | 返回指定键映射到的值,如果此映射不包含键映射,则返回默认值。 | | [hashCode()](https://www.geeksforgeeks.org/map-hashcode-method-in-java-with-examples/) | 返回此映射的哈希代码值。 | | [【isempty()](https://www.geeksforgeeks.org/map-isempty-method-in-java-with-examples/) | 如果此映射不包含键值映射,则返回 true。 | | 合并(K 键,V 值,双功能 super V,? super V,? extends V>重映射功能) | 如果指定的键尚未与值相关联或与 null 相关联,则将其与给定的非 null 值相关联。 | | [放(K 键,V 值)](https://www.geeksforgeeks.org/map-put-method-in-java-with-examples/) | 将指定值与此映射中的指定键相关联(可选操作)。 | | [普塔尔(地图 m)](https://www.geeksforgeeks.org/map-putall-method-in-java-with-examples/) | 将所有映射从指定映射复制到此映射(可选操作)。 | | 莆田(K key,V value) | 如果指定的键还没有与值相关联(或者被映射为 null),则将它与给定值相关联并返回 null,否则返回当前值。 | | [移除(对象键)](https://www.geeksforgeeks.org/map-remove-method-in-java-with-examples/) | 从该映射中删除键的映射(如果存在)(可选操作)。 | | 移除(对象键,对象值) | 仅当指定项当前映射到指定值时,才移除该项。 | | 更换(K 键,V 值) | 仅当指定键当前映射到某个值时,才替换该项。 | | 更换(K 键、旧值、新值) | 仅当当前映射到指定值时,替换指定键的条目。 | | 替换全部(双功能 super K,? super V,? extends V>功能) | 将每个条目的值替换为对该条目调用给定函数的结果,直到所有条目都已处理完毕或函数引发异常。 | | 大小() | 返回此映射中键值映射的数量。 |参考:https://docs . Oracle . com/javase/8/docs/API/Java/util/naviglamblamp . html 本文由 Pratik Agarwal 供稿。如果你喜欢 GeeksforGeeks 并想投稿,你也可以使用write.geeksforgeeks.org写一篇文章或者把你的文章邮寄到 review-team@geeksforgeeks.org。看到你的文章出现在极客博客主页上,帮助其他极客。 如果发现有不正确的地方,或者想分享更多关于上述话题的信息,请写评论。
版权属于:月萌API www.moonapi.com,转载请注明出处