/** * Creates a new array list and fills it with a given type-specific list. * * @param l a type-specific list that will be used to fill the array list. */ public IdentityArrayList(final ObjectList<? extends K> l) { this(l.size()); l.getElements(0, a, 0, size = l.size()); }
@Override public boolean add(K key) { return list.add(key); } @Override
if ( elements.size() == 0 ) return null; BitVector first = elements.get( 0 ), curr; int prefix = first.size(), change = -1, j; if ( elements.size() == 1 ) return new Node( pos < prefix ? LongArrayBitVector.copy( first.subVector( pos, prefix ) ) : null, size++ ); for( ListIterator<LongArrayBitVector> i = elements.listIterator( 1 ); i.hasNext(); ) { curr = i.next(); for( ListIterator<LongArrayBitVector> i = elements.listIterator( 1 ); i.hasNext(); ) { curr = i.next(); if ( curr.getBoolean( prefix ) ) break; n.left = buildTrie( elements.subList( 1, change ), prefix + 1 ); n.right = buildTrie( elements.subList( change, elements.size() ), prefix + 1 ); n.left = buildTrie( elements.subList( 0, change ), prefix + 1 ); n.right = buildTrie( elements.subList( change, elements.size() ), prefix + 1 );
@Override public void size(final int size) { synchronized (sync) { list.size(size); } } @Override
@Override public K get(final int i) { synchronized (sync) { return list.get(i); } } @Override
/** * Shuffles the specified list using the specified pseudorandom number * generator. * * @param l * the list to be shuffled. * @param random * a pseudorandom number generator. * @return {@code l}. */ public static <K> ObjectList<K> shuffle(final ObjectList<K> l, final Random random) { for (int i = l.size(); i-- != 0;) { final int p = random.nextInt(i + 1); final K t = l.get(i); l.set(i, l.get(p)); l.set(p, t); } return l; } /**
@Override public <T> T[] toArray(T[] a) { return list.toArray(a); } @Override
@Override public ObjectBigListIterator<K> iterator() { return ObjectBigListIterators.asBigListIterator(list.iterator()); } @Override
@Override public void clear() { list.clear(); } @Override
@Override public void getElements(final int from, final Object a[], final int offset, final int length) { synchronized (sync) { list.getElements(from, a, offset, length); } } @Override
@Override public void add(final int i, final K k) { synchronized (sync) { list.add(i, k); } } @Override
if ( elements.size() == 0 ) return null; BitVector first = elements.get( 0 ), curr; int prefix = first.size(), change = -1, j; if ( elements.size() == 1 ) return new Node( pos < prefix ? LongArrayBitVector.copy( first.subVector( pos, prefix ) ) : null, size++ ); for( ListIterator<LongArrayBitVector> i = elements.listIterator( 1 ); i.hasNext(); ) { curr = i.next(); for( ListIterator<LongArrayBitVector> i = elements.listIterator( 1 ); i.hasNext(); ) { curr = i.next(); if ( curr.getBoolean( prefix ) ) break; n.left = buildTrie( elements.subList( 1, change ), prefix + 1 ); n.right = buildTrie( elements.subList( change, elements.size() ), prefix + 1 ); n.left = buildTrie( elements.subList( 0, change ), prefix + 1 ); n.right = buildTrie( elements.subList( change, elements.size() ), prefix + 1 );
@Override public long size64() { return list.size(); } @Override
@Override public K get(final int i) { return list.get(i); } @Override
@Override public Object[] toArray() { return list.toArray(); } @Override
@Override public boolean remove(Object k) { final ObjectListIterator<RemovalListener> iterator = removalListeners.iterator(); while(iterator.hasNext()) { if(iterator.next().onRemove((Solution)k)) { iterator.remove(); } } return super.remove(k); }