Package org.eclipse.mat.inspections.collectionextract

## Class AbstractExtractedCollection<E,​X extends ICollectionExtractor>

- java.lang.Object
- - org.eclipse.mat.inspections.collectionextract.AbstractExtractedCollection<E,​X>

All Implemented Interfaces:
  `Serializable`, `Iterable<E>`, `IObject`

Direct Known Subclasses:
  `ExtractedCollection`, `ExtractedMap`

    public abstract class AbstractExtractedCollection<E,​X extends ICollectionExtractor>
    extends Object
    implements Iterable<E>, IObject

An abstract class representing a collection extracted from the heap. It provides convenience methods for querying certain properties of the collection (e.g. size) and for extracting the elements of the collection

Since:
  1.5
See Also:
  Serialized Form

### Nested Class Summary

### Nested classes/interfaces inherited from interface org.eclipse.mat.snapshot.model.IObject

`IObject.Type`

### Constructor Summary

Constructors
`AbstractExtractedCollection​(IObject collection, X extractor)`

### Method Summary

All Methods Instance Methods Concrete Methods
`IObjectArray` `extractEntries()` Get the array with contents of the collection
`int[]` `extractEntryIds()` Get the object Ids (int) of the contents of the collection
`Integer` `getCapacity()` Get the capacity of the collection
`String` `getClassSpecificName()` Get class specific name of this object which depends on the availability of the appropriate name resolver, e.g.
`IClass` `getClazz()` Get class snapshot object this object is an instance of.
`String` `getDisplayName()` Get concatenation of `IObject.getTechnicalName()` and `IObject.getClassSpecificName()`.
`Double` `getFillRatio()` Get the ratio to which the collection is filled (for collections which preallocates a certain capacity)
`GCRootInfo[]` `getGCRootInfo()` Get `GCRootInfo` if the object is a garbage collection root or null otherwise.
`long` `getObjectAddress()` Get address for the snapshot object.
`int` `getObjectId()` Get id for the snapshot object.
`List<NamedReference>` `getOutboundReferences()` Get list of snapshot objects referenced from this snapshot object with the name of the field over which it was referenced.
`long` `getRetainedHeapSize()` Get retained heap size of this object.
`ISnapshot` `getSnapshot()` Returns the snapshot from which this object has been read.
`String` `getTechnicalName()` Get technical name of this object which is something like class@address.
`long` `getUsedHeapSize()` Get used heap size of just this object.
`boolean` `hasCapacity()` Check if the collection has a capacity property, i.e.
`boolean` `hasExtractableArray()` Check if the contents of the collection can be extracted as an array (e.g.
`boolean` `hasExtractableContents()` Check if the the contents of the collection can be extracted
`boolean` `hasFillRatio()` Check if the collision ration can be calculated for the collection
`boolean` `hasSize()` Check if the collection has a size property
`Boolean` `isEmpty()` Check if the collection is empty
`Object` `resolveValue​(String field)` Resolves and returns the value of a field specified by a dot notation.
`Integer` `size()` Get the size of the collection.
`String` `toString()`

### Methods inherited from class java.lang.Object

`equals, getClass, hashCode, notify, notifyAll, wait, wait, wait`

### Methods inherited from interface java.lang.Iterable

`forEach, iterator, spliterator`

### Constructor Detail

#### AbstractExtractedCollection

    public AbstractExtractedCollection​(IObject collection,
                                       X extractor)

Parameters:
  `collection` - an IObject representing a collection
  `extractor` - used to extract the contents

### Method Detail

#### hasSize

    public boolean hasSize()

Check if the collection has a size property

Returns:
  true if the collection has a valid `size()`
See Also:
  `size()`

#### hasExtractableContents

    public boolean hasExtractableContents()

Check if the the contents of the collection can be extracted

Returns:
  true if the collection has an extractable ids
See Also:
  `extractEntryIds()`

#### hasExtractableArray

    public boolean hasExtractableArray()

Check if the contents of the collection can be extracted as an array (e.g. for ArrayList)

Returns:
  true if the collection has an extractable contents as an `IObjectArray`
See Also:
  `extractEntries()`

#### hasCapacity

    public boolean hasCapacity()

Check if the collection has a capacity property, i.e. if it preallocates space for its content

Returns:
  true if the collection has a valid `getCapacity()`
See Also:
  `getCapacity()`

#### hasFillRatio

    public boolean hasFillRatio()

Check if the collision ration can be calculated for the collection

Returns:
  true if the collection has a valid fill ratio
See Also:
  `size()`

#### getCapacity

    public Integer getCapacity()

Get the capacity of the collection

Returns:
  the capacity of the collection as an Integer
See Also:
  `hasCapacity()`

#### size

    public Integer size()

Get the size of the collection. This is the number of entries it holds.

Returns:
  the size of the collection as an `Integer`
See Also:
  `hasSize()`

#### getFillRatio

    public Double getFillRatio()

Get the ratio to which the collection is filled (for collections which preallocates a certain capacity)

Returns:
  a `Double` between 0.0 and 1.0 inclusive
See Also:
  `hasFillRatio()`

#### isEmpty

    public Boolean isEmpty()

Check if the collection is empty

Returns:
  true if the collection is empty, either `size()` is zero or there are no entry ids.

#### extractEntryIds

    public int[] extractEntryIds()

Get the object Ids (int) of the contents of the collection

Returns:
  an int[] array of object identifiers
See Also:
  `hasExtractableContents()`

#### extractEntries

    public IObjectArray extractEntries()

Get the array with contents of the collection

Returns:
  an `IObjectArray` holding the objects in the collection
See Also:
  `hasExtractableContents()`

#### getRetainedHeapSize

    public long getRetainedHeapSize()

Description copied from interface: `IObject`
Get retained heap size of this object.

Specified by:
  `getRetainedHeapSize` in interface `IObject`
Returns:
  retained heap size of this object (returns 0 if the dominator tree wasn't calculated for the corresponding snapshot)

#### getUsedHeapSize

    public long getUsedHeapSize()

Description copied from interface: `IObject`
Get used heap size of just this object.

Specified by:
  `getUsedHeapSize` in interface `IObject`
Returns:
  used heap size of this object

#### getObjectId

    public int getObjectId()

Description copied from interface: `IObject`
Get id for the snapshot object. The id is not the address, but an internally assigned number fitting into an `int` (this helps reducing the memory footprint of the snapshot considerably - addresses are only used for visualization purposes).

Specified by:
  `getObjectId` in interface `IObject`
Returns:
  id for the snapshot object

#### getObjectAddress

    public long getObjectAddress()

Description copied from interface: `IObject`
Get address for the snapshot object. This is the address at which the object was stored in memory. Use the address only for visualization purposes and try to use the id wherever possible as the snapshot API is optimized to handle ids and not addresses. Addresses are bigger ( `long`), have no consecutive order (with gaps), and are not used for hashing.

Specified by:
  `getObjectAddress` in interface `IObject`
Returns:
  address for the snapshot object

#### getClazz

    public IClass getClazz()

Description copied from interface: `IObject`
Get class snapshot object this object is an instance of.

Specified by:
  `getClazz` in interface `IObject`
Returns:
  class snapshot object this object is an instance of

#### getTechnicalName

    public String getTechnicalName()

Description copied from interface: `IObject`
Get technical name of this object which is something like class@address.

Specified by:
  `getTechnicalName` in interface `IObject`
Returns:
  technical name of this object which is something like class@address

#### getClassSpecificName

    public String getClassSpecificName()

Description copied from interface: `IObject`
Get class specific name of this object which depends on the availability of the appropriate name resolver, e.g. for a String the value of the char[].

Specified by:
  `getClassSpecificName` in interface `IObject`
Returns:
  class specific name of the given snapshot object or null if it can't be resolved

#### getDisplayName

    public String getDisplayName()

Description copied from interface: `IObject`
Get concatenation of `IObject.getTechnicalName()` and `IObject.getClassSpecificName()`.

Specified by:
  `getDisplayName` in interface `IObject`
Returns:
  concatenation of `IObject.getTechnicalName()` and `IObject.getClassSpecificName()`

#### getOutboundReferences

    public List<NamedReference> getOutboundReferences()

Description copied from interface: `IObject`
Get list of snapshot objects referenced from this snapshot object with the name of the field over which it was referenced.

Specified by:
  `getOutboundReferences` in interface `IObject`
Returns:
  list of snapshot objects referenced from this snapshot object with the name of the field over which it was referenced

#### resolveValue

    public Object resolveValue​(String field)
                        throws SnapshotException

Description copied from interface: `IObject`
Resolves and returns the value of a field specified by a dot notation. If the field is a primitive type, the value the returns the corresponding object wrapper, e.g. a java.lang.Boolean is returned for a field of type boolean. If the field is an object reference, the corresponding IObject is returned.

The field can be specified using the dot notation, i.e. object references are followed and its fields are evaluated. If any of the object references is null, null is returned.

Specified by:
  `resolveValue` in interface `IObject`
Parameters:
  `field` - the field name in dot notation
Returns:
  the value of the field
Throws:
  `SnapshotException`

#### getGCRootInfo

    public GCRootInfo[] getGCRootInfo()
                               throws SnapshotException

Description copied from interface: `IObject`
Get `GCRootInfo` if the object is a garbage collection root or null otherwise. An object may or may not be a garbage collection root, it may even be one for multiple reasons (described in the `GCRootInfo` object).

Specified by:
  `getGCRootInfo` in interface `IObject`
Returns:
  `GCRootInfo` if the object is a garbage collection root or null otherwise
Throws:
  `SnapshotException`

#### getSnapshot

    public ISnapshot getSnapshot()

Description copied from interface: `IObject`
Returns the snapshot from which this object has been read.

Specified by:
  `getSnapshot` in interface `IObject`
Returns:
  the snapshot from which this object has been read.

#### toString

    public String toString()

Overrides:
  `toString` in class `Object`