package lambdas;

import java.util.AbstractList;

/**
 * Example to demonstrate Exception Transparency
 *
 * @author Howard Lovatt
 */
public class IntList11 extends AbstractList<Integer> implements SortableList<Integer> {
  private final int[] values = new int[] { 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };

  @Override public Integer get( final int index ) { return values[ index ]; }

  @Override public Integer set( final int index, final Integer newValue ) {
    final int old = values[ index ];
    values[ index ] = newValue;
    return old;
  }

  @Override public int size() { return values.length; }

  @Override public <throws E> void forEach( final Method1<Integer, Integer, E> method ) throws E {
//    for ( int i = 0; i < size(); i++ ) {
    for ( int i = 0; i < values.length; i++ ) {
//      final Integer oldValue = get( i );
      final Integer oldValue = values[ i ];
      final Integer newValue = method.call( oldValue );
//      set( i, newValue );
      values[ i ] = newValue;
    }
  }
}