2016-03-23 1 views
-1

Mon programme est conçu pour lire un fichier texte et insérer les noms dans une liste unique et imprimer les noms par ordre alphabétique. Il existe une méthode compareTo et equals dans la classe name qui doit être utilisée dans la liste singlelinked classe. Dans la classe singleLinkedList, j'ai utilisé la méthode addToList pour créer la liste. Je parviens à obtenir tous les noms dans la liste, mais je n'ai aucune idée de la façon d'utiliser la méthode compareTo pour trier la liste par ordre alphabétique dans la classe singlelinkedlist. Voici mon code: Nom de la classe:Besoin d'aide pour trier une SingleLinkedList par ordre alphabétique

 public class Name implements Comparator<Name> { 
     private String firstName; 
     private String lastName; 
    public Name(String firstName, String lastName) { 
     super(); 
     this.firstName = firstName; 
     this.lastName = lastName; 
    } 
    public String toString(){ 
     return firstName + " " + lastName; 
    } 
    public int compareTo(Name name){ 
     return (this.firstName).compareTo(name.firstName); 
    } 
    /** 
    * @return the firstName 
    */ 
    public String getFirstName() { 
     return firstName; 
    } 
    /** 
    * @param firstName the firstName to set 
    */ 
    public void setFirstName(String firstName) { 
     this.firstName = firstName; 
    } 
    /** 
    * @return the lastName 
    */ 
    public String getLastName() { 
     return lastName; 
    } 
    /** 
    * @param lastName the lastName to set 
    */ 
    public void setLastName(String lastName) { 
     this.lastName = lastName; 
    } 
    } 

classe SingleLinkedList:

public class SingleLinkedList { 
    private static Node head; 
    private int listCount; 
/** 
* No-arg constructor 
*/ 
public SingleLinkedList() 
{ 
} 
/** 
* adds node to start 
* @param name 
*/ 
public void addToStart(Name name) 
{ 
    head = new Node(name, head); 
    listCount++; 
} 
/** 
* adds node to list 
* @param name 
*/ 
public void addToList(Name name) 
{ 
if(head != null) 
{ 
    Node curr = head; 
while(curr.next != null) 
{ 
    curr = curr.next; 
} 
    curr.next = new Node(name); 
} 
else 
{ 
    head = new Node(name); 
} 
    listCount++; 
} 
/** 
* Number of nodes in the list 
* 
* @return list count 
*/ 
public int size() 
{ 
    return listCount; 
} 
public String toString() 
{ 
    StringBuilder sb = new StringBuilder(); 
    Node curr = head; 
if(curr != null) 
{ 
while(curr.next != null) 
{ 
    sb.append(curr.name.toString()); 
    sb.append("\n"); 
    curr = curr.next; 
} 
    sb.append(curr.name.toString()); 
} 
    return sb.toString(); 
} 
private class Node 
{ 
    private Name name; 
    private Node next; 
public Node(Name name) 
{ 
    this.name=name; 
    next = null; 
} 
public Node(Name name, Node next) 
{ 
    this(name); 
    this.next = next; 
} 
} 
} 

Pilote principal:

public class ClassListDriver { 

/** 
* @param args 
*/ 
public static void main(String[] args) { 
String filename="179ClassList.txt"; 
Scanner inputStream=null; 
SingleLinkedList sll= new SingleLinkedList(); 
try 
{ 
    inputStream=new Scanner(new File(filename)); 
} 
catch(FileNotFoundException e){ 
    System.out.println("Error opening the file."); 
    System.exit(0); 
} 
while(inputStream.hasNextLine()){ 
    String[] data=inputStream.nextLine().split(" "); 
    String firstName=data[0]; 
    String lastName=data[1]; 
    Name name= new Name(firstName,lastName); 
    sll.addToList(name); 
} 
System.out.println(sll); 
System.out.println(sll.size()); 
} 

} 
+0

Voici résolu http://stackoverflow.com/questions/27410241/sorting-a-list-alphabetically-using-compareto-method?rq=1 – RubioRic

Répondre

0

Vous devez implémenter un comparateur sur votre classe Nom.

public class Name implements Comparator<Name>{ 

// Overriding the compareTo method 
    public int compareTo(Name name){ 
     return (this.firstName).compareTo(name.firstName); 
    } 
} 
+0

Comment puis-je utiliser cette méthode pour trier ma liste si ? – javaprog431