sim.util
Class DoubleBag

java.lang.Object
  extended bysim.util.DoubleBag
All Implemented Interfaces:
java.lang.Cloneable, java.io.Serializable

public class DoubleBag
extends java.lang.Object
implements java.io.Serializable, java.lang.Cloneable

Maintains a simple array (obj) of doubles and the number of doubles (numObjs) in the array (the array can be bigger than this number). You are encouraged to access the doubles directly; they are stored in positions [0 ... numObjs-1]. If you wish to extend the array, you should call the resize method.

DoubleBag is approximately to double what Bag is to Object. However, for obvious reasons, DoubleBag is not a java.util.Collection subclass and is purposely simple (it doesn't have an operator for example).

DoubleBag is not synchronized, and so should not be accessed from different threads without locking on it or some appropriate lock double first. DoubleBag also has an unusual, fast method for removing doubles called remove(...), which removes the double simply by swapping the topmost double into its place. This means that after remove(...) is called, the DoubleBag may no longer have the same order (hence the reason it's called a "DoubleBag" rather than some variant on "Vector" or "Array" or "List"). You can guarantee order by calling removeNondestructively(...) instead if you wish, but this is O(n) in the worst case.

See Also:
Serialized Form

Field Summary
 int numObjs
           
 double[] objs
           
 
Constructor Summary
DoubleBag()
           
DoubleBag(DoubleBag other)
          Adds the doubles from the other DoubleBag without copying them.
 
Method Summary
 boolean add(double obj)
           
 boolean addAll(DoubleBag other)
           
 boolean addAll(int index, double[] other)
           
 boolean addAll(int index, DoubleBag other)
           
 void clear()
           
 java.lang.Object clone()
           
 java.lang.Class componentType()
           
 boolean contains(double o)
           
 double get(int index)
           
 java.lang.Object getValue(int index)
           
 boolean isEmpty()
           
 double pop()
          Returns 0 if the DoubleBag is empty, else removes and returns the topmost double.
 boolean push(double obj)
          Synonym for add(obj) -- try to use add instead unless you want to think of the DoubleBag as a stack.
 double remove(int index)
          Removes the double at the given index, moving the topmost double into its position.
 double removeNondestructively(int index)
          Removes the double at the given index, shifting the other doubles down.
 void resize(int toAtLeast)
           
 double set(int index, double element)
           
 java.lang.Object set(int index, java.lang.Object value)
           
 int size()
           
protected  void throwIndexOutOfBoundsException(int index)
           
 double[] toArray()
           
 double top()
          Returns 0 if the DoubleBag is empty, else returns the topmost double.
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

objs

public double[] objs

numObjs

public int numObjs
Constructor Detail

DoubleBag

public DoubleBag()

DoubleBag

public DoubleBag(DoubleBag other)
Adds the doubles from the other DoubleBag without copying them. The size of the new DoubleBag is the minimum necessary size to hold the doubles.

Method Detail

size

public int size()

isEmpty

public boolean isEmpty()

addAll

public boolean addAll(int index,
                      double[] other)

addAll

public boolean addAll(DoubleBag other)

addAll

public boolean addAll(int index,
                      DoubleBag other)

clone

public java.lang.Object clone()
                       throws java.lang.CloneNotSupportedException
Throws:
java.lang.CloneNotSupportedException

resize

public void resize(int toAtLeast)

top

public double top()
Returns 0 if the DoubleBag is empty, else returns the topmost double.


pop

public double pop()
Returns 0 if the DoubleBag is empty, else removes and returns the topmost double.


push

public boolean push(double obj)
Synonym for add(obj) -- try to use add instead unless you want to think of the DoubleBag as a stack.


add

public boolean add(double obj)

contains

public boolean contains(double o)

get

public double get(int index)

getValue

public java.lang.Object getValue(int index)

set

public double set(int index,
                  double element)

set

public java.lang.Object set(int index,
                            java.lang.Object value)

removeNondestructively

public double removeNondestructively(int index)
Removes the double at the given index, shifting the other doubles down.


remove

public double remove(int index)
Removes the double at the given index, moving the topmost double into its position.


throwIndexOutOfBoundsException

protected void throwIndexOutOfBoundsException(int index)

clear

public void clear()

toArray

public double[] toArray()

componentType

public java.lang.Class componentType()