Package org.eclipse.core.databinding.observable.list

# Class ListDiff<E>

java.lang.Object
org.eclipse.core.databinding.observable.list.ListDiff<E>

Type Parameters:
  `E` - the type of the elements in this diff

All Implemented Interfaces:
  `IDiff`

public abstract class ListDiff<E> extends Object implements IDiff
Object describing a diff between two lists.

Since:
  1.0

## Constructor Summary

Constructors
Constructor
Description
`ListDiff()`

## Method Summary

Modifier and Type
Method
Description
`void`
`accept(ListDiffVisitor<? super E> visitor)`
Traverses the `getDifferences()` array, calling the appropriate method in `visitor` for each difference.
`void`
`applyTo(List<? super E> list)`
Applies the changes in this diff to the given list
`abstract ListDiffEntry<E>[]`
`getDifferences()`
Returns a ListDiffEntry array representing the differences in the list, in the order they are to be processed.
`boolean`
`isEmpty()`
Returns true if the diff contains no added, removed, moved or replaced elements.
`List<E>`
`simulateOn(List<E> list)`
Returns a list showing what `list` would look like if this diff were applied to it.
`String`
`toString()`

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

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

## Constructor Details

### ListDiff

public ListDiff()

## Method Details

### getDifferences

public abstract ListDiffEntry<E>[] getDifferences()
Returns a ListDiffEntry array representing the differences in the list, in the order they are to be processed.

This method returns identical results to `getDifferencesAsList` except that the results are returned as a array and so the ListDiffEntry objects are not properly typed. This form is here for compatibility. Use `getDifferencesAsList` to get typed results.

Returns:
  a ListDiffEntry array representing the differences in the list, in the order they are to be processed.

### accept

public void accept(ListDiffVisitor<? super E> visitor)
Traverses the `getDifferences()` array, calling the appropriate method in `visitor` for each difference.

1. `ListDiffVisitor.handleReplace(int, Object, Object)` is called whenever an add entry is adjacent to a remove entry, and both entries operate on the same location in the list.
2. `ListDiffVisitor.handleMove(int, int, Object)` is called whenever an add entry is adjacent to a remove entry, and both entries have equivalent elements.
3. `ListDiffVisitor.handleRemove(int, Object)` is called whenever a remove entry does not match conditions 1 or 2.
4. `ListDiffVisitor.handleAdd(int, Object)` is called whenever an add entry does not match conditions in 1 or 2.

Parameters:
  `visitor` - the visitor to receive callbacks.
Since:
  1.1
See Also:
  - `ListDiffVisitor`

### isEmpty

public boolean isEmpty()
Returns true if the diff contains no added, removed, moved or replaced elements.

Returns:
  true if the diff contains no added, removed, moved or replaced elements.
Since:
  1.2

### applyTo

public void applyTo(List<? super E> list)
Applies the changes in this diff to the given list

Parameters:
  `list` - the list to which the diff will be applied
Since:
  1.2

### simulateOn

public List<E> simulateOn(List<E> list)
Returns a list showing what `list` would look like if this diff were applied to it.

Note: the returned list is only valid until structural changes are made to the passed-in list.

Parameters:
  `list` - the list over which the diff will be simulated
Returns:
  an unmodifiable list showing what `list` would look like if it were passed to the `applyTo(List)` method.
Since:
  1.3
See Also:
  - `applyTo(List)`

### toString

public String toString()

Overrides:
  `toString` in class `Object`