Java源碼解析之SortedMap和NavigableMap
由于亂序的數(shù)據(jù)對(duì)查找不利,例如無法使用二分法等降低算法的時(shí)間復(fù)雜度,如果數(shù)據(jù)在插入時(shí)就排好序,查找的性能聚會(huì)提升很多。sortedMap接口就是為這種有序的數(shù)據(jù)服務(wù)的。
二、sortedMap接口sortedMap接口需要數(shù)據(jù)的key支持Comparable,或者可以被指定的Comparator接受。sortedMap主要提供了以下方法:
// 返回排序數(shù)據(jù)所用的ComparatorComparator<? super K> comparator();// 返回在[fromKey, toKey)之間的數(shù)據(jù)SortedMap<K,V> subMap(K fromKey, K toKey);// 返回從第一個(gè)元素到toKey之間的數(shù)據(jù)SortedMap<K,V> headMap(K toKey);// 返回從fromKey到末尾之間的數(shù)據(jù)SortedMap<K,V> tailMap(K fromKey);//返回第一個(gè)數(shù)據(jù)的keyK firstKey();//返回最后一個(gè)數(shù)據(jù)的keyK lastKey();
SortedMap主要提供了獲取子集,以及獲取最大值(最后一個(gè)值)和最小值(第一個(gè)值)的方法。但這僅僅是排序數(shù)據(jù)能提供的便利的一小部分,在接下來分析的NavigableMap中,我們還會(huì)看到更多的功能。
SortedMap提供了獲取最大值與最小值的方法,但對(duì)于一個(gè)已經(jīng)排序的數(shù)據(jù)集,除了最大值與最小值之外,我們可以對(duì)任何一個(gè)元素,找到比它小的值和比它大的值,還可以按照按照原有的順序倒序排序等。NavigableMap就為我們提供了這些功能。
三、NavigableMap接口我們來看看NavigableMap主要有哪些方法
// 找到第一個(gè)比指定的key小的值Map.Entry<K,V> lowerEntry(K key);// 找到第一個(gè)比指定的key小的keyK lowerKey(K key);// 找到第一個(gè)小于或等于指定key的值Map.Entry<K,V> floorEntry(K key);// 找到第一個(gè)小于或等于指定key的keyK floorKey(K key);// 找到第一個(gè)大于或等于指定key的值Map.Entry<K,V> ceilingEntry(K key);K ceilingKey(K key);// 找到第一個(gè)大于指定key的值Map.Entry<K,V> higherEntry(K key);K higherKey(K key);// 獲取最小值Map.Entry<K,V> firstEntry();// 獲取最大值Map.Entry<K,V> lastEntry();// 刪除最小的元素Map.Entry<K,V> pollFirstEntry();// 刪除最大的元素Map.Entry<K,V> pollLastEntry();//返回一個(gè)倒序的MapNavigableMap<K,V> descendingMap();// 返回一個(gè)Navigable的key的集合,NavigableSet和NavigableMap類似NavigableSet<K> navigableKeySet();// 對(duì)上述集合倒序NavigableSet<K> descendingKeySet();
到此這篇關(guān)于Java源碼解析之SortedMap和NavigableMap的文章就介紹到這了,更多相關(guān)Java SortedMap和NavigableMap內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. 使用Python和百度語音識(shí)別生成視頻字幕的實(shí)現(xiàn)2. 淺談SpringMVC jsp前臺(tái)獲取參數(shù)的方式 EL表達(dá)式3. Java封裝數(shù)組實(shí)現(xiàn)包含、搜索和刪除元素操作詳解4. Gitlab CI-CD自動(dòng)化部署SpringBoot項(xiàng)目的方法步驟5. ajax請(qǐng)求添加自定義header參數(shù)代碼6. JAVA上加密算法的實(shí)現(xiàn)用例7. 基于javascript處理二進(jìn)制圖片流過程詳解8. Django-migrate報(bào)錯(cuò)問題解決方案9. ASP刪除img標(biāo)簽的style屬性只保留src的正則函數(shù)10. ASP中解決“對(duì)象關(guān)閉時(shí),不允許操作。”的詭異問題……
