sortedmap.java

来自「java源代码 请看看啊 提点宝贵的意见」· Java 代码 · 共 225 行

JAVA
225
字号
/* * @(#)SortedMap.java	1.15 03/01/23 * * Copyright 2003 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */package java.util;/** * A map that further guarantees that it will be in ascending key order, * sorted according to the <i>natural ordering</i> of its keys (see the * <tt>Comparable</tt> interface), or by a comparator provided at sorted map * creation time.  This order is reflected when iterating over the sorted * map's collection views (returned by the <tt>entrySet</tt>, <tt>keySet</tt> * and <tt>values</tt> methods).  Several additional operations are provided * to take advantage of the ordering.  (This interface is the map analogue of * the <tt>SortedSet</tt> interface.)<p> * * All keys inserted into a sorted map must implement the <tt>Comparable</tt> * interface (or be accepted by the specified comparator).  Furthermore, all * such keys must be <i>mutually comparable</i>: <tt>k1.compareTo(k2)</tt> (or * <tt>comparator.compare(k1, k2)</tt>) must not throw a * <tt>ClassCastException</tt> for any elements <tt>k1</tt> and <tt>k2</tt> in * the sorted map.  Attempts to violate this restriction will cause the * offending method or constructor invocation to throw a * <tt>ClassCastException</tt>.<p> * * Note that the ordering maintained by a sorted map (whether or not an * explicit comparator is provided) must be <i>consistent with equals</i> if * the sorted map is to correctly implement the <tt>Map</tt> interface.  (See * the <tt>Comparable</tt> interface or <tt>Comparator</tt> interface for a * precise definition of <i>consistent with equals</i>.)  This is so because * the <tt>Map</tt> interface is defined in terms of the <tt>equals</tt> * operation, but a sorted map performs all key comparisons using its * <tt>compareTo</tt> (or <tt>compare</tt>) method, so two keys that are * deemed equal by this method are, from the standpoint of the sorted map, * equal.  The behavior of a tree map <i>is</i> well-defined even if its * ordering is inconsistent with equals; it just fails to obey the general * contract of the <tt>Map</tt> interface.<p> * * All general-purpose sorted map implementation classes should provide four * "standard" constructors: 1) A void (no arguments) constructor, which * creates an empty sorted map sorted according to the <i>natural order</i> of * its keys.  2) A constructor with a single argument of type * <tt>Comparator</tt>, which creates an empty sorted map sorted according to * the specified comparator.  3) A constructor with a single argument of type * <tt>Map</tt>, which creates a new map with the same key-value mappings as * its argument, sorted according to the keys' natural ordering.  4) A * constructor with a single argument of type sorted map, which creates a new * sorted map with the same key-value mappings and the same ordering as the * input sorted map.  There is no way to enforce this recommendation (as * interfaces cannot contain constructors) but the SDK implementation * (TreeMap) complies.<p> * * This interface is a member of the  * <a href="{@docRoot}/../guide/collections/index.html"> * Java Collections Framework</a>. * * @author  Josh Bloch * @version 1.15, 01/23/03 * @see Map * @see TreeMap * @see SortedSet * @see Comparator * @see Comparable * @see Collection * @see ClassCastException * @since 1.2 */public interface SortedMap extends Map {    /**     * Returns the comparator associated with this sorted map, or     * <tt>null</tt> if it uses its keys' natural ordering.     *     * @return the comparator associated with this sorted map, or     * 	       <tt>null</tt> if it uses its keys' natural ordering.     */    Comparator comparator();    /**     * Returns a view of the portion of this sorted map whose keys range from     * <tt>fromKey</tt>, inclusive, to <tt>toKey</tt>, exclusive.  (If     * <tt>fromKey</tt> and <tt>toKey</tt> are equal, the returned sorted map     * is empty.)  The returned sorted map is backed by this sorted map, so     * changes in the returned sorted map are reflected in this sorted map,     * and vice-versa.  The returned Map supports all optional map operations     * that this sorted map supports.<p>     *     * The map returned by this method will throw an     * <tt>IllegalArgumentException</tt> if the user attempts to insert a key     * outside the specified range.<p>     *     * Note: this method always returns a <i>half-open range</i> (which     * includes its low endpoint but not its high endpoint).  If you need a     * <i>closed range</i> (which includes both endpoints), and the key type     * allows for calculation of the successor a given key, merely request the     * subrange from <tt>lowEndpoint</tt> to <tt>successor(highEndpoint)</tt>.     * For example, suppose that <tt>m</tt> is a map whose keys are strings.     * The following idiom obtains a view containing all of the key-value     * mappings in <tt>m</tt> whose keys are between <tt>low</tt> and     * <tt>high</tt>, inclusive:     *      * 	    <pre>    Map sub = m.subMap(low, high+"\0");</pre>     *      * A similarly technique can be used to generate an <i>open range</i>     * (which contains neither endpoint).  The following idiom obtains a     * view containing  all of the key-value mappings in <tt>m</tt> whose keys     * are between <tt>low</tt> and <tt>high</tt>, exclusive:     *      * 	    <pre>    Map sub = m.subMap(low+"\0", high);</pre>     *     * @param fromKey low endpoint (inclusive) of the subMap.     * @param toKey high endpoint (exclusive) of the subMap.     * @return a view of the specified range within this sorted map.     *      * @throws ClassCastException if <tt>fromKey</tt> and <tt>toKey</tt>     *         cannot be compared to one another using this map's comparator     *         (or, if the map has no comparator, using natural ordering).     *         Implementations may, but are not required to, throw this     *	       exception if <tt>fromKey</tt> or <tt>toKey</tt>     *         cannot be compared to keys currently in the map.     * @throws IllegalArgumentException if <tt>fromKey</tt> is greater than     *         <tt>toKey</tt>; or if this map is itself a subMap, headMap,     *         or tailMap, and <tt>fromKey</tt> or <tt>toKey</tt> are not     *         within the specified range of the subMap, headMap, or tailMap.     * @throws NullPointerException if <tt>fromKey</tt> or <tt>toKey</tt> is     *	       <tt>null</tt> and this sorted map does not tolerate     *	       <tt>null</tt> keys.     */    SortedMap subMap(Object fromKey, Object toKey);    /**     * Returns a view of the portion of this sorted map whose keys are     * strictly less than toKey.  The returned sorted map is backed by this     * sorted map, so changes in the returned sorted map are reflected in this     * sorted map, and vice-versa.  The returned map supports all optional map     * operations that this sorted map supports.<p>     *     * The map returned by this method will throw an IllegalArgumentException     * if the user attempts to insert a key outside the specified range.<p>     *     * Note: this method always returns a view that does not contain its     * (high) endpoint.  If you need a view that does contain this endpoint,     * and the key type allows for calculation of the successor a given     * key, merely request a headMap bounded by successor(highEndpoint).     * For example, suppose that suppose that <tt>m</tt> is a map whose keys     * are strings.  The following idiom obtains a view containing all of the     * key-value mappings in <tt>m</tt> whose keys are less than or equal to     * <tt>high</tt>:     *      * 	    <pre>    Map head = m.headMap(high+"\0");</pre>     *     * @param toKey high endpoint (exclusive) of the subMap.     * @return a view of the specified initial range of this sorted map.     * @throws ClassCastException if <tt>toKey</tt> is not compatible     *         with this map's comparator (or, if the map has no comparator,     *         if <tt>toKey</tt> does not implement <tt>Comparable</tt>).     *         Implementations may, but are not required to, throw this     *	       exception if <tt>toKey</tt> cannot be compared to keys     *         currently in the map.     * @throws IllegalArgumentException if this map is itself a subMap,     *         headMap, or tailMap, and <tt>toKey</tt> is not within the     *         specified range of the subMap, headMap, or tailMap.     * @throws NullPointerException if <tt>toKey</tt> is <tt>null</tt> and     *	       this sorted map does not tolerate <tt>null</tt> keys.     */    SortedMap headMap(Object toKey);    /**     * Returns a view of the portion of this sorted map whose keys are greater     * than or equal to <tt>fromKey</tt>.  The returned sorted map is backed     * by this sorted map, so changes in the returned sorted map are reflected     * in this sorted map, and vice-versa.  The returned map supports all     * optional map operations that this sorted map supports.<p>     *     * The map returned by this method will throw an     * <tt>IllegalArgumentException</tt> if the user attempts to insert a key     * outside the specified range.<p>     *     * Note: this method always returns a view that contains its (low)     * endpoint.  If you need a view that does not contain this endpoint, and     * the element type allows for calculation of the successor a given value,     * merely request a tailMap bounded by <tt>successor(lowEndpoint)</tt>.     * For example, suppose that suppose that <tt>m</tt> is a map whose keys     * are strings.  The following idiom obtains a view containing all of the     * key-value mappings in <tt>m</tt> whose keys are strictly greater than     * <tt>low</tt>:     *      * 	    <pre>    Map tail = m.tailMap(low+"\0");</pre>     *     * @param fromKey low endpoint (inclusive) of the tailMap.     * @return a view of the specified final range of this sorted map.     * @throws ClassCastException if <tt>fromKey</tt> is not compatible     *         with this map's comparator (or, if the map has no comparator,     *         if <tt>fromKey</tt> does not implement <tt>Comparable</tt>).     *         Implementations may, but are not required to, throw this     *	       exception if <tt>fromKey</tt> cannot be compared to keys     *         currently in the map.     * @throws IllegalArgumentException if this map is itself a subMap,     *         headMap, or tailMap, and <tt>fromKey</tt> is not within the     *         specified range of the subMap, headMap, or tailMap.     * @throws NullPointerException if <tt>fromKey</tt> is <tt>null</tt> and     *	       this sorted map does not tolerate <tt>null</tt> keys.     */    SortedMap tailMap(Object fromKey);    /**     * Returns the first (lowest) key currently in this sorted map.     *     * @return the first (lowest) key currently in this sorted map.     * @throws    NoSuchElementException if this map is empty.     */    Object firstKey();    /**     * Returns the last (highest) key currently in this sorted map.     *     * @return the last (highest) key currently in this sorted map.     * @throws     NoSuchElementException if this map is empty.     */    Object lastKey();}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?