All Downloads are FREE. Search and download functionalities are using the official Maven repository.

uk.ac.starlink.util.ByteList Maven / Gradle / Ivy

There is a newer version: 4.3
Show newest version
package uk.ac.starlink.util;

/**
 * Extendable array of bytes.
 *
 * @author   Mark Taylor
 * @since    12 Oct 2006
 */
public class ByteList extends PrimitiveList {

    /**
     * Constructs a new list.
     */
    public ByteList() {
        this( DEFAULT_SIZE );
    }

    /**
     * Constructs a new list with a given initial capacity.
     *
     * @param   size  initial capacity
     */
    public ByteList( int size ) {
        super( new byte[ size ], 0 );
    }

    /**
     * Constructs a new list initialised to the contents of a given array.
     *
     * @param   array   array whose contents form initial contents of list
     */
    public ByteList( byte[] array ) {
        super( array.clone(), array.length );
    }

    /**
     * Returns the element at a given position.
     *
     * @param   i   index
     * @return   element at i
     */ 
    public byte get( int i ) {
        checkIndex( i );
        return ((byte[]) array_)[ i ];
    }

    /**
     * Sets the element at a given position.
     *
     * @param   i  index
     * @param   value   new value for element i
     */
    public void set( int i, byte value ) {
        checkIndex( i );
        ((byte[]) array_)[ i ] = value;
    }

    /**
     * Appends a value to the end of this list.
     *
     * @param   value  value to append
     */
    public void add( byte value ) {
        expandSize( 1 );
        set( size() - 1, value );
    }

    /**
     * Appends all the elements of a second list to this list.
     *
     * @param  other  other list
     * @return   true iff this collection changed as a result of the call
     */
    public boolean addAll( ByteList other ) {
        return super.addAll( other );
    }

    /**
     * Appends all the elements of a primitive array to this list.
     *
     * @param   array  array to append
     * @return   true iff this collection changed as a result of the call
     */ 
    public boolean addAll( byte[] array ) {
        return super.addArrayElements( array, array.length );
    }

    /**
     * Returns the contents of this list as an array.
     *
     * @return   copy of list contents
     */
    public byte[] toByteArray() {
        return (byte[]) toArray();
    }

    /**
     * Returns the array currently used to store the contents of this list.
     * Its length will be greater than or equal to the length of this list.
     * The identity of the returned array may change as this list is mutated.
     *
     * @return  storage array
     */
    public byte[] getByteBuffer() {
        return (byte[]) array_;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy