@Override public T getElementAt( final int index ) { return get( index ); }
/** * Returns the element at the specified position in this list. * * This re-queues elements to give them top priority. * * @inheritdoc */ @Override public T get( final int index ) { synchronized ( _queue ) { final T result = super.get( index ); if ( result != null ) { final QueueElement<T> queueElement = new QueueElement<T>( result ); if ( _queue.remove( queueElement ) ) /* only requeue if it's queued */ { addToQueue( queueElement ); } } return result; } }
@Override public void removeRange( final int fromIndex, final int toIndex ) { synchronized ( _queue ) { final int modCount = toIndex - fromIndex; final Object[] removedElements = new Object[ modCount ]; for ( int i = 0; i < removedElements.length; i++ ) { removedElements[ i ] = super.get( fromIndex + i ); } super.removeRange( fromIndex, toIndex ); for ( final Object element : removedElements ) { if ( ( element != null ) && !contains( element ) ) { _queue.remove( new QueueElement<T>( (T)element ) ); } } } }