A linked list with multiple heads in Java
- by Emile
Hi,
I have a list in which I'd like to keep several head pointers. I've tried to create multiple ListIterators on the same list but this forbid me to add new elements in my list... (see Concurrent Modification exception).
I could create my own class but I'd rather use a built-in implementation ;)
To be more specific, here is an inefficient implementation of two basic operations and the one wich doesn't work :
class MyList <E {
private int[] _heads;
private List<E _l;
public MyList ( int nbHeads ) {
_heads = new int[nbHeads];
_l = new LinkedList<E();
}
public void add ( E e ) {
_l.add(e);
}
public E next ( int head ) {
return _l.get(_heads[head++]); // ugly
}
}
class MyList <E {
private Vector<ListIterator<E _iters;
private List<E _l;
public MyList ( int nbHeads ) {
_iters = new Vector<ListIterator<E(nbHeads);
_l = new LinkedList<E();
for( ListIterator<E iter : _iters ) iter = _l.listIterator();
}
public void add ( E e ) {
_l.add(e);
}
public E next ( int head ) {
// ConcurrentModificationException because of the add()
return _iters.get(head).next();
}
}
Emile