2011-04-11 5 views
0

J'ai regardé les messages sur ici pour faire de tri et de recherche mais ne peut pas sembler obtenir mon arraylist pour trier ou rechercher à l'aidele tri et la recherche d'un arraylist

Collections.sort(myarraylist); 

Les données qui sont stockées dans l'arraylist est seulement stocké lorsque l'utilisateur entre des données dans des champs de texte dans une interface graphique. J'ai utilisé getText pour stocker les données (que l'utilisateur entre dans JTextFields) dans l'arraylist.

L'utilisateur doit être en mesure d'entrer un nom ou prénom dans un

String searchstring = JOptionPane.showInputDialog("Enter Name"); 

Le tri doit être effectué après que l'utilisateur ajoute le chaque nouveau contact dans le arraylist par nom de famille.

Ma question est la suivante:

  1. Comment puis-je trier les arraylist?
  2. Comment puis-je effectuer une recherche dans l'arborescence?

S'il vous plaît pouvez-vous me dire comment procéder car je suis vraiment coincé !!

+3

Regardez la colonne "Related" de droite. –

+1

Si ce qui est dans la colonne correspondante ne fonctionne pas, postez un petit programme pour nous que nous puissions compiler et exécuter qui illustre le problème. – corsiKa

+0

J'ai plusieurs classes différentes. La plupart des classes contiennent du code pour créer des interfaces graphiques pour l'ajout de nouveaux contacts, la recherche 1, la recherche 2, l'importation et l'exportation des contacts aux formats VCARD et TXT.J'ai aussi une classe Contacts où j'ai des constructeurs qui obtiennent le texte entré par l'utilisateur à partir de l'interface graphique. L'arraylist est dans la même classe que la classe de menu principal qui se compose de l'interface de menu principal. – Computeristic

Répondre

1

Le ArrayList myarraylist détient des contacts, que je suppose avoir au moins deux champs String (prénom et nom). Si vous comparez deux contacts, comment décidez-vous lequel passe en premier sur la liste triée? Je suppose que vous avez un type de Contact qui contient tous ces champs. Ce que vous devez faire est implémenter l'interface Comparable avec le type Contact, de sorte que l'algorithme de tri puisse déterminer lequel de deux contacts donnés vient en premier dans la liste.

Lorsque vous déclarez votre type Contact, vous devez ajouter deux éléments: la déclaration implements Comparable et la définition de votre méthode int compareTo(Object).

Ainsi, votre classe Contact ressemblera à quelque chose comme ceci:

public class Contact implements Comparable{ 
     private String firstName, lastName; 
     public int compareTo(Object o){ 
      return lastName.compareTo(((Contact)o).getLastName()); 
     } 
     public String getLastName(){ 
      return lastName; 
     } 
     //the rest of your Contact class stuff here. 
} 
+0

... et vous devez passer l'implémentation comme argument à la méthode de tri. – StriplingWarrior

+0

Oui, j'ai une classe Contacts. Contacts est le type qui contient toutes les données JTextFields une fois que l'utilisateur entre les données. J'ai lu sur Comparable, mais je suis confus quant à la façon dont je peux l'utiliser dans le programme. Est-ce que je l'ajoute à l'ActionListener pour le bouton? Fondamentalement, je veux que l'utilisateur entre le nom d'un contact en utilisant la boîte de saisie, puis je veux que le programme recherche dans l'arraylist jusqu'à ce qu'il trouve le contact que l'utilisateur veut trouver. Et puis je veux supprimer ce contact particulier de l'arraylist. Comment pensez-vous que je devrais procéder? – Computeristic

0

Comment puis-je trier les arraylist?

implémentent l'interface Comparable et remplacer la méthode compareTo pour les objets d'entrer dans votre liste.

Comment puis-je effectuer une recherche dans l'arborescence?

Faites votre propre recherche - qu'avez-vous déjà essayé? L'approche la plus simple consiste à parcourir chaque élément de la liste.