NavigableSet介面原始碼淺析(基於jdk1.8.0_231)
阿新 • • 發佈:2020-08-05
1. NavigableSet介面簡介
- 根據“實現了啥介面,提供啥服務”原則,若類實現了NavigableSet介面,說明該類可以可以根據給定的搜尋目標,返回一個匹配簇,舉例通俗不嚴格地講,對於一個集合類若實現了NavigableSet介面,他就會提供比給定目*標小的子集合,在給定目標範圍內的子集合,比給定目標大的子集合;
2. NavigableSet UML
3. NavigalbleSet 原始碼
package java.util; public interface NavigableSet<E> extends SortedSet<E> { // 實現介面API約定:返回集合set中比e小(嚴格小的,等於不可)的最大的元素,如果沒有返回null,如果e是null,會丟擲NullPointerException // 如果e不能與集合set中的其他元素比較,會丟擲ClassCastException E lower(E e); // 實現介面API約定: 返回集合set中比e小(小於 等於 e都可)的最大的元素,如果沒有返回null。如果e是null,會丟擲NullPointerException // 如果e不能與集合set中的其他元素比較,會丟擲ClassCastException E floor(E e); // 實現介面API約定:返回集合set中比e大的(大於或等於都可)元素中最小的,如果沒有,返回null.如果e = null 且 集合set不允許放null元素,會丟擲NullPointerException, // 如果e不能與集合set中的其他元素比較,會丟擲ClassCastException E ceiling(E e); // 實現介面API約定:返回集合set中比e大的(嚴格比e大)元素中最小的,如果沒有,返回null.如果e = null 且 集合set不允許放null元素,會丟擲NullPointerException, // 如果e不能與集合set中的其他元素比較,會丟擲ClassCastException E higher(E e); // 實現介面API約定:移除第一個元素,返回移除的元素(就是最小的元素),如果集合set為空返回null E pollFirst(); // 實現介面API約定:移除最後一個元素(就是最大的元素),返回移除的元素,如果集合set為空返回null E pollLast(); // 實現介面API約定:返回集合set的升序迭代器(用此迭代器依次訪問的元素是升序的) Iterator<E> iterator(); // 實現介面API約定:返回集合set元素的逆序檢視(就是按元素降序返回,效果和Collections.reverseOrder方法一樣) NavigableSet<E> descendingSet(); // 實現介面API約定:返回集合set的降序迭代器,等價於 descendingSet().iterator()(用此迭代器依次訪問的元素是降序的) Iterator<E> descendingIterator(); // 實現介面API約定:返回集合set的子集合檢視,如果fromElement = toElement,且在fromInclusive toInclusive至多有一個為true,返回空集合,對子集合檢視的改變會直接反映在父集合set上 // 若對檢視操作索引的範圍不合法,會丟擲IllegalArgumentException(如插入一個元素超過檢視的範圍啊),若fromElment或toElement為null,且集合set不允許存null,會丟擲NullPointerException,若fromElement和toElement // 不可以和set中的元素比較,會丟擲ClassCastException // fromInclusive = true 表示包含fromElement元素,toInclusive同理 NavigableSet<E> subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive); // 實現介面API約定: 當inclusive = false時,返回集合中小於toElement的所有元素的檢視,當inclusive = true,返回集合中小於或等於toElement的所有元素的檢視 // 對檢視結構的修改會直接反映在原集合set上的 // 若對檢視操作索引的範圍不合法,會丟擲IllegalArgumentException(如插入一個元素超過檢視的範圍啊),若fromElment或toElement為null,且集合set不允許存null,會丟擲NullPointerException,若 // fromElement和toElement NavigableSet<E> headSet(E toElement, boolean inclusive); // 實現介面API約定: 當inclusive = false時,返回集合中大於toElement的所有元素的檢視,當inclusive = true,返回集合中大於或等於toElement的所有元素的檢視 // 對檢視結構的修改會直接反映在原集合set上的 // 若對檢視操作索引的範圍不合法,會丟擲IllegalArgumentException(如插入一個元素超過檢視的範圍啊),若fromElment或toElement為null,且集合set不允許存null,會丟擲NullPointerException,若 // fromElement和toElement NavigableSet<E> tailSet(E fromElement, boolean inclusive); // 實現介面API約定:等價於subSet(fromElement, true, toElement, false) SortedSet<E> subSet(E fromElement, E toElement); // 實現介面API約定:等價於headSet(toElement, false) SortedSet<E> headSet(E toElement); // 實現介面API約定:等價於tailSet(fromElement, true) SortedSet<E> tailSet(E fromElement); }