2010-11-08 3 views
0

Je développe une balançoire à base application.In, il y a une donnée JTable.The est peuplée en JTable en deux façons-Java recherche d'une chaîne

  1. L'utilisateur sélectionne un fichier (fichier Chooser etc) .Application charge les données dans JTable.
  2. Sondages d'application pour les messages sur certains paramètres réseau.Lorsque le message arrive, il charge dans JTable.

Je veux maintenant donner l'option de recherche pour user.When il tape une chaîne dans la boîte JDialog, l'application doit se concentrer sur cette ligne spécifique où la chaîne correspond à des données en ligne de la table table.When est peuplée, les changements de TableModel Chaque rangée est le vecteur ainsi la table est des vecteurs de vecteur. Quelle structure de données sera adaptée pour cela? En boucle à travers chaque ligne Vecteur et recherche?

Répondre

2

La recherche se fait sur le modèle de la table - vous êtes un vecteur de vecteurs. Si vous faites une recherche en texte libre (et que vous ne voulez pas calculer un index), votre infrastructure de données est appropriée, car vous devez tester chaque cellule si elle contient la chaîne de recherche ou correspond au modèle. Fondamentalement, vous voulez faire quelque chose comme ceci:

List<List<String>> tableModel = getTableModel(); // some magic at the beginning 
String searchString = getSearchString(); 

for (List<String> row:tableModel) { 
    for (String cell:row) { 
    if (cell.contains(searchString)) { 
     // We've found one cell that contains the search string 
    } 
    } 
} 
+0

Thanks.Thats ce que je veux do.But voulu savoir, s'il y a une meilleure way.Number de lignes dans le tableau varie de 1 à max-200. et chaque rangée a 6 champs. – Chirota

+0

@Chirota - Ne vous souciez pas de la performance si vous devez visiter 1200 cellules. Pour les modèles plus grands, on pourrait envisager d'indexer les données d'entrée et d'utiliser une bibliothèque comme Lucene, mais cela représente beaucoup d'efforts et ne vaut vraiment pas le coup dans votre scénario. –

+0

Je ne m'inquiéterais pas de l'efficacité si vous ne faites que 1200 comparaisons. –