Coverage Report - org.apache.commons.collections.primitives.BooleanList
 
Classes in this File Line Coverage Branch Coverage Complexity
BooleanList
N/A
N/A
1
 
 1  
 /*
 2  
  * Licensed to the Apache Software Foundation (ASF) under one or more
 3  
  * contributor license agreements.  See the NOTICE file distributed with
 4  
  * this work for additional information regarding copyright ownership.
 5  
  * The ASF licenses this file to You under the Apache License, Version 2.0
 6  
  * (the "License"); you may not use this file except in compliance with
 7  
  * the License.  You may obtain a copy of the License at
 8  
  *
 9  
  *     http://www.apache.org/licenses/LICENSE-2.0
 10  
  *
 11  
  * Unless required by applicable law or agreed to in writing, software
 12  
  * distributed under the License is distributed on an "AS IS" BASIS,
 13  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 14  
  * See the License for the specific language governing permissions and
 15  
  * limitations under the License.
 16  
  */
 17  
 package org.apache.commons.collections.primitives;
 18  
 
 19  
 /**
 20  
  * An ordered collection of <code>byte</code> values.
 21  
  *
 22  
  * @see org.apache.commons.collections.primitives.adapters.BooleanListList
 23  
  * @see org.apache.commons.collections.primitives.adapters.BooleanByteList
 24  
  *
 25  
  * @since Commons Primitives 1.1
 26  
  * @version $Revision: 480460 $ $Date: 2006-11-29 03:14:21 -0500 (Wed, 29 Nov 2006) $
 27  
  */
 28  
 public interface BooleanList extends BooleanCollection {
 29  
     /** 
 30  
      * Appends the specified element to the end of me (optional operation).
 31  
      * Returns <code>true</code> iff I changed as a result of this call.
 32  
      * <p/>
 33  
      * If a collection refuses to add the specified element for any reason
 34  
      * other than that it already contains the element, it <i>must</i>
 35  
      * throw an exception (rather than simply returning <tt>false</tt>).
 36  
      * This preserves the invariant that a collection always contains the
 37  
      * specified element after this call returns.
 38  
      * 
 39  
      * @param element the value whose presence within me is to be ensured
 40  
      * @return <code>true</code> iff I changed as a result of this call
 41  
      * 
 42  
      * @throws UnsupportedOperationException when this operation is not 
 43  
      *         supported
 44  
      * @throws IllegalArgumentException may be thrown if some aspect of the 
 45  
      *         specified element prevents it from being added to me
 46  
      */
 47  
     boolean add(boolean element);
 48  
        
 49  
     /** 
 50  
      * Inserts the specified element at the specified position (optional
 51  
      * operation). Shifts the element currently at that position (if any)
 52  
      * and any subsequent elements to the right, increasing their indices.
 53  
      * 
 54  
      * @param index the index at which to insert the element
 55  
      * @param element the value to insert
 56  
      * 
 57  
      * @throws UnsupportedOperationException when this operation is not 
 58  
      *         supported
 59  
      * @throws IllegalArgumentException if some aspect of the specified element 
 60  
      *         prevents it from being added to me
 61  
      * @throws IndexOutOfBoundsException if the specified index is out of range
 62  
      */
 63  
     void add(int index, boolean element);
 64  
           
 65  
     /** 
 66  
      * Inserts all of the elements in the specified collection into me,
 67  
      * at the specified position (optional operation).  Shifts the 
 68  
      * element currently at that position (if any) and any subsequent 
 69  
      * elements to the right, increasing their indices.  The new elements 
 70  
      * will appear in the order that they are returned by the given 
 71  
      * collection's {@link BooleanCollection#iterator iterator}.
 72  
      * 
 73  
      * @param index the index at which to insert the first element from 
 74  
      *        the specified collection
 75  
      * @param collection the {@link BooleanCollection ByteCollection} of
 76  
      *        elements to add
 77  
      * @return <code>true</code> iff I changed as a result of this call
 78  
      * 
 79  
      * @throws UnsupportedOperationException when this operation is not 
 80  
      *         supported
 81  
      * @throws IndexOutOfBoundsException if the specified index is out of range
 82  
      */
 83  
     boolean addAll(int index, BooleanCollection collection);
 84  
     
 85  
     /**
 86  
      * Returns <code>true</code> iff <i>that</i> is an <code>BooleanList</code>
 87  
      * that contains the same elements in the same order as me.
 88  
      * In other words, returns <code>true</code> iff <i>that</i> is
 89  
      * a <code>BooleanList</code> that has the same {@link #size() size} as me,
 90  
      * and for which the elements returned by its 
 91  
      * {@link BooleanList#iterator iterator} are equal (<code>==</code>) to
 92  
      * the corresponding elements within me.
 93  
      * (This contract ensures that this method works properly across 
 94  
      * different implementations of the <code>BooleanList</code> interface.)
 95  
      * 
 96  
      * @param that the object to compare to me
 97  
      * @return <code>true</code> iff <i>that</i> is an <code>BooleanList</code>
 98  
      *         that contains the same elements in the same order as me
 99  
      */
 100  
     boolean equals(Object that);
 101  
     
 102  
     /** 
 103  
      * Returns the value of the element at the specified position 
 104  
      * within me. 
 105  
      * 
 106  
      * @param index the index of the element to return
 107  
      * @return the value of the element at the specified position
 108  
      * @throws IndexOutOfBoundsException if the specified index is out of range
 109  
      */
 110  
     boolean get(int index);
 111  
         
 112  
     /**
 113  
      * @todo figure something out for this
 114  
      * Returns my hash code.
 115  
      * <p />
 116  
      * The hash code of an <code>BooleanList</code> is defined to be the
 117  
      * result of the following calculation:
 118  
      * <pre> int hash = 1;
 119  
      * for(BooleanIterator iter = iterator(); iter.hasNext(); ) {
 120  
      *   boolean value = iter.next();
 121  
      *   hash = 31*hash + (int)(value ^ (value >>> 32));
 122  
      * }</pre>
 123  
      * <p />
 124  
      * This contract ensures that this method is consistent with 
 125  
      * {@link #equals equals} and with the 
 126  
      * {@link java.util.List#hashCode hashCode}
 127  
      * method of a {@link java.util.List List} of {@link Boolean}s.
 128  
      * 
 129  
      * @return my hash code
 130  
      */
 131  
     int hashCode();
 132  
 
 133  
     /** 
 134  
      * Returns the index of the first occurrence of the specified element
 135  
      * within me, or <code>-1</code> if I do not contain the element.
 136  
      * 
 137  
      * @param element the element to search for
 138  
      * @return the smallest index of an element matching the specified value,
 139  
      *         or <code>-1</code> if no such matching element can be found 
 140  
      */
 141  
     int indexOf(boolean element);
 142  
      
 143  
     /** 
 144  
      * Returns an {@link BooleanIterator iterator} over all my elements,
 145  
      * in the appropriate sequence.
 146  
      * @return an {@link BooleanIterator iterator} over all my elements.
 147  
      */
 148  
     BooleanIterator iterator();
 149  
 
 150  
     /** 
 151  
      * Returns the index of the last occurrence of the specified element
 152  
      * within me, or -1 if I do not contain the element.
 153  
      * 
 154  
      * @param element the element to search for
 155  
      * @return the largest index of an element matching the specified value,
 156  
      *         or <code>-1</code> if no such matching element can be found 
 157  
      */
 158  
     int lastIndexOf(boolean element);
 159  
     
 160  
     /** 
 161  
      * Returns a {@link BooleanListIterator bidirectional iterator} over
 162  
      * all my elements, in the appropriate sequence.
 163  
      */
 164  
     BooleanListIterator listIterator();
 165  
     
 166  
     /** 
 167  
      * Returns a {@link BooleanListIterator bidirectional iterator} over all
 168  
      * my elements, in the appropriate sequence, starting at the specified
 169  
      * position. The specified <i>index</i> indicates the first element that
 170  
      * would be returned by an initial call to the {@link
 171  
      * BooleanListIterator#next next} method. An initial call to the {@link
 172  
      * BooleanListIterator#previous previous} method would return the element
 173  
      * with the specified <i>index</i> minus one.
 174  
      * 
 175  
      * @throws IndexOutOfBoundsException if the specified index is out of range
 176  
      */
 177  
     BooleanListIterator listIterator(int index);
 178  
     
 179  
     /** 
 180  
      * Removes the element at the specified position in 
 181  
      * (optional operation).  Any subsequent elements 
 182  
      * are shifted to the left, subtracting one from their 
 183  
      * indices.  Returns the element that was removed.
 184  
      * 
 185  
      * @param index the index of the element to remove
 186  
      * @return the value of the element that was removed
 187  
      * 
 188  
      * @throws UnsupportedOperationException when this operation is not 
 189  
      *         supported
 190  
      * @throws IndexOutOfBoundsException if the specified index is out of range
 191  
      */
 192  
     boolean removeElementAt(int index);
 193  
    
 194  
     /** 
 195  
      * Replaces the element at the specified position in me with the specified
 196  
      * element (optional operation).
 197  
      * 
 198  
      * @param index the index of the element to change
 199  
      * @param element the value to be stored at the specified position
 200  
      * @return the value previously stored at the specified position
 201  
      * 
 202  
      * @throws UnsupportedOperationException when this operation is not 
 203  
      *         supported
 204  
      * @throws IndexOutOfBoundsException if the specified index is out of range
 205  
      */
 206  
     boolean set(int index, boolean element);
 207  
     
 208  
     /** 
 209  
      * Returns a view of the elements within me between the specified
 210  
      * <i>fromIndex</i>, inclusive, and <i>toIndex</i>, exclusive.  The
 211  
      * returned <code>BooleanList</code> is backed by me, so that any changes
 212  
      * in the returned list are reflected in me, and vice-versa. The returned
 213  
      * list supports all of the optional operations that I support.
 214  
      * <p/>
 215  
      * Note that when <code><i>fromIndex</i> == <i>toIndex</i></code>, the
 216  
      * returned list is initially empty, and when <code><i>fromIndex</i> == 0
 217  
      * && <i>toIndex</i> == {@link #size() size()}</code> the returned list is
 218  
      * my "improper" sublist, containing all my elements.
 219  
      * <p/>
 220  
      * The semantics of the returned list become undefined if I am structurally
 221  
      * modified in any way other than via the returned list.
 222  
      * 
 223  
      * @param fromIndex the smallest index (inclusive) in me that appears in 
 224  
      *        the returned list
 225  
      * @param toIndex the largest index (exclusive) in me that appears in the 
 226  
      *        returned list
 227  
      * @return a view of this list from <i>fromIndex</i> (inclusive) to 
 228  
      *         <i>toIndex</i> (exclusive)
 229  
      * 
 230  
      * @throws IndexOutOfBoundsException if either specified index is out of range
 231  
      */
 232  
     BooleanList subList(int fromIndex, int toIndex);
 233  
 
 234  
 }