1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/*
2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  Licensed to the Apache Software Foundation (ASF) under one or more
3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  contributor license agreements.  See the NOTICE file distributed with
4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  this work for additional information regarding copyright ownership.
5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  The ASF licenses this file to You under the Apache License, Version 2.0
6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  (the "License"); you may not use this file except in compliance with
7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  the License.  You may obtain a copy of the License at
8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *     http://www.apache.org/licenses/LICENSE-2.0
10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  Unless required by applicable law or agreed to in writing, software
12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  distributed under the License is distributed on an "AS IS" BASIS,
13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  See the License for the specific language governing permissions and
15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  limitations under the License.
16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage java.util;
19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/**
22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * SortedSet is a Set which iterates over its elements in a sorted order. The
23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * order is determined either by the elements natural ordering, or by a
24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@link Comparator} which is passed into a concrete implementation at
25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * construction time. All elements in this set must be mutually comparable. The
26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * ordering in this set must be consistent with {@code equals} of its elements.
27f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes *
28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see Comparator
29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see Comparable
30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic interface SortedSet<E> extends Set<E> {
32f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns the comparator used to compare elements in this {@code SortedSet}.
35f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return a comparator or null if the natural ordering is used.
37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public Comparator<? super E> comparator();
39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns the first element in this {@code SortedSet}. The first element
42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * is the lowest element.
43f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the first element.
45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws NoSuchElementException
46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             when this {@code SortedSet} is empty.
47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public E first();
49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns a {@code SortedSet} of the specified portion of this
52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * {@code SortedSet} which contains elements less than the end element. The
53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * returned {@code SortedSet} is backed by this {@code SortedSet} so changes
54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * to one set are reflected by the other.
55f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param end
57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the end element.
58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return a subset where the elements are less than {@code end}.
59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws ClassCastException
60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             when the class of the end element is inappropriate for this
61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             SubSet.
62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws NullPointerException
63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             when the end element is null and this {@code SortedSet} does
64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             not support null elements.
65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public SortedSet<E> headSet(E end);
67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns the last element in this {@code SortedSet}. The last element is
70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * the highest element.
71f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the last element.
73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws NoSuchElementException
74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             when this {@code SortedSet} is empty.
75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public E last();
77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns a {@code SortedSet} of the specified portion of this
80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * {@code SortedSet} which contains elements greater or equal to the start
81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * element but less than the end element. The returned {@code SortedSet} is
82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * backed by this SortedMap so changes to one set are reflected by the
83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * other.
84f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param start
86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the start element.
87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param end
88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the end element.
89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return a subset where the elements are greater or equal to {@code start}
90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         and less than {@code end}.
91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws ClassCastException
92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             when the class of the start or end element is inappropriate
93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             for this SubSet.
94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws NullPointerException
95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             when the start or end element is null and this
96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             {@code SortedSet} does not support null elements.
97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws IllegalArgumentException
98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             when the start element is greater than the end element.
99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public SortedSet<E> subSet(E start, E end);
101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns a {@code SortedSet} of the specified portion of this
104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * {@code SortedSet} which contains elements greater or equal to the start
105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * element. The returned {@code SortedSet} is backed by this
106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * {@code SortedSet} so changes to one set are reflected by the other.
107f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     *
108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param start
109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the start element.
110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return a subset where the elements are greater or equal to {@code start} .
111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws ClassCastException
112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             when the class of the start element is inappropriate for this
113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             SubSet.
114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws NullPointerException
115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             when the start element is null and this {@code SortedSet}
116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             does not support null elements.
117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public SortedSet<E> tailSet(E start);
119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}
120