public class LinkedList extends AbstractList<Node2>
{
Node2 n;
int sizee;
public LinkedList()
{
n=null;
sizee=0;
}
@Override
public Node2 get(int poz)
{
Node2 pp=this.n;
for(int i=1;i<=poz;i++)
{
if(pp==null)
break;
pp=pp.nextNode;
}
return pp;
}
public Node2 set(int ind,Node2 x)
{
Node2 pp=this.n;
Node2 t=n;
for(int i=1;i<=ind;i++)
{
if(pp==null)
break;
t=pp;
pp=pp.nextNode;
}
pp.cargo=x.cargo;
return t;
}
public boolean add(Node2 x)
{
boolean found;
Node2 r=x.clone();
Node2 p;
if(this.n==null)
{
n=r;
sizee++;
return true;
}
else
{
p=n;
while(p.nextNode!=null)
{
p=p.nextNode;
}
p.nextNode=r;
sizee++;
return true;
}
}
public int size()
{
return this.sizee;
}
public Iterator<Node2> iterator() {
return new MyIterator2(this.n);
}
public String toString()
{
Node2 p=this.n;
String str="";
while(p!=null)
{
str+=p.cargo+" ";
p=p.nextNode;
}
return str;
}
}
class Node2
{
Object cargo;
Node2 nextNode;
public Node2(Object cargo)
{
this.cargo=cargo;
}
public Node2 clone()
{
Node2 k=new Node2(this.cargo);
k.nextNode=this.nextNode;
return k;
}
}
class MyIterator2 implements Iterator<Node2>
{
Node2 r;
public MyIterator2(Node2 b)
{
this.r=b.clone();
}
public boolean hasNext()
{
if(r!=null)
{
return true;
}
return false;
}
public Node2 next()
{
Node2 u;
u=r;
r=r.nextNode;
return u;
}
}
我的比较器看起来像这样:
static class C2 implements Comparator<Node2>
{
public int compare(Node2 s1,Node2 s2)
{
return ((s1.cargo).toString()).compareTo((s2.cargo).toString());
}
}
我的问题是,当我尝试使用Collections.sort对LinkedList对象进行排序时,列表中的一些元素会消失,而其他元素会重复。例如对于3 2 5 9 8排序后变为2 3 5 8 8.我猜是问题出在set()方法但不确定。它不会抛出任何异常,但结果是错误的。谢谢你提前!