分類映射按順序保存映射條目。
它基于鍵對(duì)映射條目進(jìn)行排序從代碼中的 Comparable
接口a Comparator
對(duì)象。
如果鍵實(shí)現(xiàn) Comparable
接口并且您使用 Comparator
對(duì)象, Comparator
對(duì)象會(huì)做排序。
SortedMap
接口繼承了Map接口表示排序的映射。
Comparator comparator()
返回用于在SortedMap中進(jìn)行自定義排序的 Comparator
對(duì)象。
K firstKey()
返回SortedMap中第一個(gè)條目的鍵。如果SortedMap為空,它會(huì)拋出一個(gè) NoSuchElementException
。
SortedMap headMap(K toKey)
返回其條目的SortedMap的視圖將具有小于指定的toKey的鍵。視圖由原始SortedMap支持。
K lastKey()
返回SortedMap中最后一個(gè)條目的鍵。如果SortedMap為空,它會(huì)拋出一個(gè)NoSuchElementException異常。
SortedMap subMap(K fromKey,K toKey)
返回SortedMap的視圖其條目將具有從指定的鍵fromKey(包含)和toKey(exclusive)。
SortedMap tailMap(K fromKey)
返回其條目的SortedMap的視圖將具有等于或大于指定的fromKey的密鑰。
TreeMap
類是實(shí)現(xiàn)類 SortedMap
界面。下面的代碼演示了如何使用 SortedMap
。
import java.util.SortedMap; import java.util.TreeMap; public class Main { public static void main(String[] args) { SortedMap<String, String> sMap = new TreeMap<>(); sMap.put("CSS", "style"); sMap.put("HTML", "mark up"); sMap.put("Oracle", "database"); sMap.put("XML", "data"); SortedMap<String, String> subMap = sMap.subMap("CSS", "XML"); System.out.println(subMap); // Get the first and last keys String firstKey = sMap.firstKey(); String lastKey = sMap.lastKey(); System.out.println("First Key: " + firstKey); System.out.println("Last key: " + lastKey); } }
上面的代碼生成以下結(jié)果。
要使用 Comparator
對(duì)象對(duì) SortedMap
中的條目進(jìn)行排序,使用 TreeMap
類的構(gòu)造函數(shù)以 Comparator
作為參數(shù)。
以下代碼顯示了如何對(duì)基于排序映射的條目進(jìn)行排序在他們的鑰匙的長(zhǎng)度隨后按字母順序鍵忽略情況:
import java.util.Comparator; import java.util.SortedMap; import java.util.TreeMap; public class Main { public static void main(String[] args) { Comparator<String> keyComparator = Comparator.comparing(String::length).thenComparing(String::compareToIgnoreCase); SortedMap<String, String> sMap = new TreeMap<>(keyComparator); sMap.put("CSS", "style"); sMap.put("HTML", "mark up"); sMap.put("Oracle", "database"); sMap.put("XML", "data"); SortedMap<String, String> subMap = sMap.subMap("CSS", "XML"); System.out.println(subMap); // Get the first and last keys String firstKey = sMap.firstKey(); String lastKey = sMap.lastKey(); System.out.println("First Key: " + firstKey); System.out.println("Last key: " + lastKey); } }
上面的代碼生成以下結(jié)果。
可導(dǎo)航映射由 NavigableMap
界面的實(shí)例表示。
它通過(guò)添加方法來(lái)擴(kuò)展 SortedMap
接口對(duì)于鍵的最接近的匹配,以相反的順序獲得映射的視圖等。
TreeMap類是NavigableMap接口的實(shí)現(xiàn)類。
以下代碼顯示如何使用 NavigableMap
。
import java.util.Map.Entry; import java.util.NavigableMap; import java.util.TreeMap; public class Main { public static void main(String[] args) { NavigableMap<String, String> nMap = new TreeMap<>(); nMap.put("CSS", "style"); nMap.put("HTML", "mark up"); nMap.put("Oracle", "database"); nMap.put("XML", "data"); System.out.println("Navigable Map:" + nMap); Entry<String, String> lowerXML = nMap.lowerEntry("XML"); Entry<String, String> floorXML = nMap.floorEntry("XML"); Entry<String, String> higherXML = nMap.higherEntry("XML"); Entry<String, String> ceilingXML = nMap.ceilingEntry("XML"); System.out.println("Lower:" + lowerXML); System.out.println("Floor:" + floorXML); System.out.println("Higher:" + higherXML); System.out.println("Ceiling:" + ceilingXML); // Get the reverse order view of the map NavigableMap<String, String> reverseMap = nMap.descendingMap(); System.out.println("Navigable Map(Reverse Order):" + reverseMap); } }
上面的代碼生成以下結(jié)果。
ConcurrentMap
允許我們?cè)诓绘i定映射的情況下執(zhí)行并發(fā)操作。
我們可以在使用其實(shí)現(xiàn)類創(chuàng)建并發(fā)映射時(shí)選擇并發(fā)級(jí)別。
ConcurrentHashMap類是ConcurrentMap接口的實(shí)現(xiàn)類。 它們都在java.util.concurrent包中。
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; public class Main { public static void main(String[] args) { ConcurrentMap<String, String> cMap = new ConcurrentHashMap<>(); cMap.put("A", "A"); System.out.println("Concurrent Map: " + cMap); System.out.println(cMap.putIfAbsent("A", "1")); System.out.println(cMap.putIfAbsent("B", "B")); System.out.println(cMap.remove("A", "B")); System.out.println(cMap.replace("A", "B")); System.out.println("Concurrent Map: " + cMap); } }
上面的代碼生成以下結(jié)果。
更多建議: