Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## sim.util
Class DoubleBag

    java.lang.Object
      sim.util.DoubleBag

All Implemented Interfaces:
  java.lang.Cloneable, Indexed, java.io.Serializable

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

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 Iterator 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()` Should return the base component type for this Indexed object, or null if the component type should be queried via getValue(index).getClass.getComponentType()
`boolean` | `contains(double o)`
`double` | `get(int index)`
`java.lang.Object` | `getValue(int index)` Throws an IndexOutOfBoundsException if index is inappropriate.
`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` | `setValue(int index, java.lang.Object value)` Throws an IndexOutOfBoundsException if index is inappropriate, and IllegalArgumentException if the value is inappropriate.
`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()

  Specified by:
    `size` in interface `Indexed`

### 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)

  Description copied from interface: `Indexed`
  Throws an IndexOutOfBoundsException if index is inappropriate. Not called get() because this would conflict with get() methods in IntBag etc. which don't return objects.

  Specified by:
    `getValue` in interface `Indexed`

### set

    public double set(int index,
                      double element)

### setValue

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

  Description copied from interface: `Indexed`
  Throws an IndexOutOfBoundsException if index is inappropriate, and IllegalArgumentException if the value is inappropriate. Not called set() in order to be consistent with getValue(...)

  Specified by:
    `setValue` in interface `Indexed`

### 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()

  Description copied from interface: `Indexed`
  Should return the base component type for this Indexed object, or null if the component type should be queried via getValue(index).getClass.getComponentType()

  Specified by:
    `componentType` in interface `Indexed`

Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD