Java硬件,通过插入排序按字母顺序添加到链表中

Java硬件,通过插入排序按字母顺序添加到链表中,java,alphabetical,Java,Alphabetical,我有一个单链表,我想根据姓氏按字母顺序添加。 这是我建立的第二个链表,所以我是新手 我的计划是输入全名,然后在出现空格时将其拆分。我通过以下代码实现了这一点: String y=newNode.getName(); String [] subCurrent=y.split(" "); String last=subCurrent[subCurrent.length-1]; System.out.println(last); 然后比较两个姓氏,一个来自newN

我有一个单链表,我想根据姓氏按字母顺序添加。 这是我建立的第二个链表,所以我是新手

我的计划是输入全名,然后在出现空格时将其拆分。我通过以下代码实现了这一点:

  String y=newNode.getName();
    String [] subCurrent=y.split(" ");
    String last=subCurrent[subCurrent.length-1];

       System.out.println(last);
然后比较两个姓氏,一个来自newNode,另一个来自while循环中的当前节点:

     Node current=head;
        while (current!=null){

           String currentName= current.getName();
           String [] subCurrent1=currentName.split(" ");
           String last2=subCurrent1[subCurrent1.length-1];
           System.out.println(last2.compareTo(last)); 
如果比较结果大于0,则在while循环中的当前节点之前插入newNode:

             if( last2.compareTo(last)>0){ 
             // if number is larger than 0, put newNode infront of current.

             newNode.setLink(current.getLink());  
             current.setLink(newNode);
         }
如果不是,Id将newNode分配给tail

我的问题是,我关于按字母顺序添加的理论相对正确吗?添加节点时,我的列表不是按字母顺序排列的。例如,我加的第一个名字是“joe z”

然后我加上“约翰c”

约翰c应该放在乔z的前面,然而,我的控制台打印出来了

joey@z.net555-5555乔伊z

john@z.net555-6666约翰·c

然后我加上名字“paul a”

之后的控制台是:

joey@z.net555-5555乔伊z

paul@z.net555-5777保罗a

约翰·c被删除了

我的整个添加方法:

 public void addAfter( String email, String name, String number){

    Node newNode= new Node( email, name, number ,null); 
    index++;
    newNode.setEmail(email);
    newNode.setName(name);
    newNode.setNumber(number);
    if (head==null){  
        newNode.setLink(null);
        head=newNode;
    }

    String y=newNode.getName();
    String [] subCurrent=y.split(" ");
    String last=subCurrent[subCurrent.length-1];

      Node current=head;
      while (current!=null){

        String currentName= current.getName();
        String [] subCurrent1=currentName.split(" ");
        String last2=subCurrent1[subCurrent1.length-1];

        // comparing current getName (last2) to newNode's (last) getName.

        if( last2.compareTo(last)>0){ // if number is larger than 0, put newNode infront of current.

             newNode.setLink(current.getLink());  
             current.setLink(newNode);

         }

         if (last2.compareTo(last)<0){ // if number is less than 0, assign newNode as tail
             newNode.setLink(null);
             tail=newNode;

         } 
         current=current.getLink();
     }
}
public void addAfter(字符串电子邮件、字符串名称、字符串编号){
Node newNode=新节点(电子邮件、名称、编号、空);
索引++;
newNode.setEmail(email);
newNode.setName(name);
newNode.setNumber(number);
如果(head==null){
setLink(空);
头=新节点;
}
字符串y=newNode.getName();
字符串[]次电流=y.split(“”);
最后一个字符串=次电流[次电流.长度-1];
节点电流=头;
while(当前!=null){
字符串currentName=current.getName();
字符串[]subCurrent1=currentName.split(“”);
字符串last2=subCurrent1[subCurrent1.length-1];
//将当前getName(last2)与新节点的(last)getName进行比较。
若(last2.compareTo(last)>0{//若数字大于0,则将newNode放在当前节点的前面。
setLink(current.getLink());
current.setLink(newNode);
}

if(last2.compare)to(last)使用此选项为工作选择最佳集合:如提问者在标题中所述,这是家庭作业,是实现类似集合的类所必需的。