HermeZ
Mitglied
Hallo,
ich habe ein mehr der weniger großes Problem mit einer sortierten Liste...
Naja wir sollen eine selber implementieren und ich bin jetzt schon am Verzweifeln. Schaffe es einfach nicht sie zum laufen zu bringen.
bekomme immer eine NullPointerException
so ganz blicke ich da natürlich nicht durch, sonst wüsste ich ja warum.
ist natürlich ganz schön lang, aber der fehler muss irgendwo in der removeAll liegen
puh naja vielleicht kann mir ja jemand helfen...
ich habe ein mehr der weniger großes Problem mit einer sortierten Liste...
Naja wir sollen eine selber implementieren und ich bin jetzt schon am Verzweifeln. Schaffe es einfach nicht sie zum laufen zu bringen.
bekomme immer eine NullPointerException
so ganz blicke ich da natürlich nicht durch, sonst wüsste ich ja warum.
ist natürlich ganz schön lang, aber der fehler muss irgendwo in der removeAll liegen
Code:
public class SortedSet implements Collection
{
private Iterator myIterator = null;
private int counter;
private Knot start;
private Knot save;
public SortedSet()
{
start = null;
counter = 0;
}
public boolean add(Object o)
{
Knot foo = new Knot(o);
if (counter == 0)
{
start = foo;
counter++;
return true;
}
else
if(!contains(foo.value))
{
save = start;
foo.next = start;
start = foo;
counter++;
return true;
}
else
return false;
}
public boolean addAll(Collection c)
{
Iterator foo = c.iterator();
while (foo.hasNext())
{
add((foo.next()));
//add(((Knot)foo.next()).value);
}
return true;
}
public void clear()
{
start = null;
save = null;
counter = 0;
}
public boolean contains(Object o)
{
Knot foo = start;
if (o==null)
return false;
while(!(foo.next==null)&&!(foo==null))
{
if (((Student)o).compareTo(foo.value)==0)
{
return true;
}
foo = foo.next;
}
return false;
}
public boolean containsAll (Collection c)
{
Iterator foo = c.iterator();
while(foo.hasNext())
{
//if (!contains(((Knot)foo.next()).value))
if (!contains((foo.next())))
{
return false;
}
}
return true;
}
public boolean equals (Object o)
{
Knot foo =save;
if ((foo.value).equals((Student)(o)))
{
return true;
}
return false;
}
public int hashCode ()
{
return start.hashCode();
}
public boolean isEmpty()
{
return (start==null);
}
public Iterator iterator()
{
return (new MyIterator(start));
}
public boolean remove (Object o)
{
/*Knot foo = start;
if ((foo.value).equals((Student)(o)))
{
counter--;
return true;
}
return false;*/
boolean ret = false;
Knot move,tmp;
move=start;
tmp=start;
while(!ret)
{
if((move.value).equals((Student)o))
{
tmp.next=move.next;
move=null;
counter--;
ret=true;
}
else
{
tmp=move;
if(move.next!=null)
move=move.next;
else
break;
}
}
return ret;
}
public boolean removeAll (Collection c)
{
Iterator foo = c.iterator();
while((foo.hasNext())&&((foo.next())!=null))
{
if ((foo.next())!=null)
remove(foo.next());
//foo.next();
}
return true;
}
public boolean retainAll (Collection c)
{
boolean del;
this.save=this.start;
for (;save!=null;save=save.next)
{
Iterator foo = c.iterator();
del = false;
while(foo.hasNext()&& (del == false))
{
if ((save.value).equals(((Knot)foo.next()).value))
del=true;
}
if (del)
remove(save.value);
}
return true;
}
public int size()
{
return counter;
}
public Object[] toArray()
{
Knot foo = start;
int i=0;
for (i=0;foo!=null;i++,foo=foo.next);
Object[] array= new Object[i];
for (i=0;foo!=null;i++,foo=foo.next)
{
array[i]=foo.value;
}
return array;
}
public Object[] toArray(Object[] a)
{
return a;
}
}
puh naja vielleicht kann mir ja jemand helfen...
