001: /*
002: * Primitive Collections for Java.
003: * Copyright (C) 2003 Søren Bak
004: *
005: * This library is free software; you can redistribute it and/or
006: * modify it under the terms of the GNU Lesser General Public
007: * License as published by the Free Software Foundation; either
008: * version 2.1 of the License, or (at your option) any later version.
009: *
010: * This library is distributed in the hope that it will be useful,
011: * but WITHOUT ANY WARRANTY; without even the implied warranty of
012: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
013: * Lesser General Public License for more details.
014: *
015: * You should have received a copy of the GNU Lesser General Public
016: * License along with this library; if not, write to the Free Software
017: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
018: */
019: package bak.pcj.set;
020:
021: /**
022: * This interface defines extends the ByteSet interface to define
023: * sorted sets.
024: *
025: * @see java.util.SortedSet
026: *
027: * @author Søren Bak
028: * @version 1.0 2002/12/04
029: * @since 1.2
030: */
031: public interface ByteSortedSet extends ByteSet {
032:
033: /**
034: * Adds an element to this set.
035: *
036: * @param v
037: * the element to add to this set.
038: *
039: * @return <tt>true</tt> if this set was modified
040: * as a result of adding <tt>v</tt>; returns
041: * <tt>false</tt> otherwise.
042: *
043: * @throws UnsupportedOperationException
044: * if the operation is not supported by this
045: * set.
046: *
047: * @throws IllegalArgumentException
048: * if <tt>v</tt> is not permitted, because this set
049: * is a subset of another set.
050: */
051: boolean add(byte v);
052:
053: /**
054: * Returns the lowest element of this set.
055: *
056: * @return the lowest element of this set.
057: *
058: * @throws NoSuchElementException
059: * if this set is empty.
060: */
061: byte first();
062:
063: /**
064: * Returns the subset of values lower than a specified value.
065: * The returned subset is a view of this set, so changes to the
066: * subset are reflected by this set and vice versa.
067: *
068: * @param to
069: * the upper bound of the returned set (not included).
070: *
071: * @throws IllegalArgumentException
072: * if <tt>to</tt> is not permitted
073: * in this set (which can be the case with returned
074: * subsets).
075: */
076: ByteSortedSet headSet(byte to);
077:
078: /**
079: * Returns the highest element of this set.
080: *
081: * @return the highest element of this set.
082: *
083: * @throws NoSuchElementException
084: * if this set is empty.
085: */
086: byte last();
087:
088: /**
089: * Returns the subset of values lower that a specified value and
090: * higher than or equal to another specified value.
091: * The returned subset is a view of this set, so changes to the
092: * subset are reflected by this set and vice versa.
093: *
094: * @param from
095: * the lower bound of the returned set (included).
096: *
097: * @param to
098: * the upper bound of the returned set (not included).
099: *
100: * @throws IllegalArgumentException
101: * if <tt>from</tt> is greater than <tt>to</tt>;
102: * if <tt>from</tt> or <tt>to</tt> is not permitted
103: * in this set (which can be the case with returned
104: * subsets).
105: */
106: ByteSortedSet subSet(byte from, byte to);
107:
108: /**
109: * Returns the subset of values higher than or equal to a
110: * specified value.
111: * The returned subset is a view of this set, so changes to the
112: * subset are reflected by this set and vice versa.
113: *
114: * @param from
115: * the lower bound of the returned set (included).
116: *
117: * @throws IllegalArgumentException
118: * if <tt>from</tt> is not permitted
119: * in this set (which can be the case with returned
120: * subsets).
121: */
122: ByteSortedSet tailSet(byte from);
123:
124: }
|