在本教程中,我們將通過(guò)一個(gè)示例學(xué)習(xí)Java NavigableMap接口及其方法。
Java集合框架的NavigableMap接口提供了在映射條目之間導(dǎo)航的功能。
它被視為SortedMap的一種類(lèi)型。
由于NavigableMap是接口,因此無(wú)法從中創(chuàng)建對(duì)象。
為了使用NavigableMap接口的功能,我們需要使用實(shí)現(xiàn)NavigableMap的TreeMap類(lèi)。
在Java中,我們必須導(dǎo)入java.util.NavigableMap包才能使用NavigableMap。 導(dǎo)入包后,將按照以下方法創(chuàng)建NavigableMap。
// NavigableMap由TreeMap類(lèi)實(shí)現(xiàn) NavigableMap<Key, Value> numbers = new TreeMap<>();
在上面的代碼中,我們創(chuàng)建了TreeMap類(lèi)的名為numbers的可導(dǎo)航映射。
這里,
Key - 用于關(guān)聯(lián)映射中每個(gè)元素(值)的唯一標(biāo)識(shí)符
Value - map中與鍵相關(guān)聯(lián)的元素
NavigableMap被視為SortedMap的一種類(lèi)型。這是因?yàn)镹avigableMap繼承了SortedMap接口。
因此,在NavigableMap中也可以使用所有SortedMap方法。了解如何在SortedMap中定義這些方法,請(qǐng)?jiān)L問(wèn)Java SortedMap。
但是,在NavigableMap中對(duì)SortedMap的某些方法(headMap(),tailMap()和subMap())進(jìn)行了不同的定義。
讓我們看看如何在中定義這些方法NavigableMap。
headMap()方法返回與指定鍵(作為參數(shù)傳遞)之前的所有鍵相關(guān)聯(lián)的可導(dǎo)航映射的所有條目。
booleanValue是一個(gè)可選的參數(shù)。默認(rèn)值為false。
如果booleanValue為true,則該方法返回與指定鍵之前的所有那些鍵相關(guān)聯(lián)的所有條目key,包括與指定鍵相關(guān)聯(lián)的條目key。
tailMap()方法返回與指定鍵(key)(作為參數(shù)傳遞)之后的所有鍵相關(guān)聯(lián)的可導(dǎo)航映射的所有條目,包括與指定鍵(key)相關(guān)聯(lián)的條目。
booleanValue是一個(gè)可選的參數(shù)。默認(rèn)值為true。
如果booleanValue為false,則該方法將返回指定鍵(key)之后與那些鍵關(guān)聯(lián)的所有條目,而不包括與指定鍵(key)關(guān)聯(lián)的條目。
subMap()方法返回與k1和k2之間的鍵相關(guān)的所有條目,包括與k1相關(guān)的條目。
bv1和bv2是可選參數(shù)。bv1的默認(rèn)值為true, bv2的默認(rèn)值為false。
如果bv1為false,則該方法返回與k1和k2之間的鍵關(guān)聯(lián)的所有條目,而不包括與k1關(guān)聯(lián)的條目。
如果bv2為true,則該方法返回與k1和k2之間的鍵關(guān)聯(lián)的所有條目,包括與k1關(guān)聯(lián)的條目。
NavigableMap提供了可用于定位映射的條目的各種方法。
DescendingMap() - 反轉(zhuǎn)map中條目的順序
DescendingKeyMap() - 反轉(zhuǎn)map中鍵的順序
ceilingEntry() - 返回其鍵大于或等于指定鍵的所有條目中鍵最小的條目
ceilingKey() - 返回大于或等于指定鍵的那些鍵中的最小鍵
floorEntry() - 返回其鍵小于或等于指定鍵的所有條目中具有最大鍵的條目
floorKey() - 返回小于或等于指定鍵的那些鍵中的最大鍵
HigherEntry() - 返回其鍵大于指定鍵的所有條目中鍵最小的條目
HigherKey() - 返回大于指定鍵的那些鍵中的最小鍵
lowerEntry() - 返回其鍵小于指定鍵的所有條目中具有最大鍵的條目
lowerKey() - 返回小于指定鍵的那些鍵中的最大鍵
firstEntry() - 返回map的第一個(gè)條目(具有最小鍵的條目)
lastEntry() - 返回map的最后一個(gè)條目(具有最大鍵的條目)
pollFirstEntry() - 返回并刪除map的第一個(gè)條目
pollLastEntry() - 返回并刪除map的最后一個(gè)條目
import java.util.NavigableMap; import java.util.TreeMap; class Main { public static void main(String[] args) { //使用TreeMap創(chuàng)建NavigableMap NavigableMap<String, Integer> numbers = new TreeMap<>(); //向map插入元素 numbers.put("Two", 2); numbers.put("One", 1); numbers.put("Three", 3); System.out.println("NavigableMap: " + numbers); //訪問(wèn)映射的第一項(xiàng) System.out.println("第一項(xiàng): " + numbers.firstEntry()); //訪問(wèn)地圖的最后一項(xiàng) System.out.println("最后一項(xiàng): " + numbers.lastEntry()); //從映射中刪除第一項(xiàng) System.out.println("刪除第一項(xiàng): " + numbers.pollFirstEntry()); //從地圖上刪除最后一項(xiàng) System.out.println("刪除最后一項(xiàng): " + numbers.pollLastEntry()); } }
輸出結(jié)果
NavigableMap: {One=1, Three=3, Two=2} 第一項(xiàng): One=1 最后一項(xiàng): Two=2 刪除第一項(xiàng): One=1 刪除最后一項(xiàng): Two=2
要了解更多信息TreeMap,請(qǐng)?jiān)L問(wèn)Java TreeMap。
現(xiàn)在我們知道了NavigableMap接口,我們將在下一個(gè)教程中使用TreeMap類(lèi),詳細(xì)了解其實(shí)現(xiàn)。