IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Optimisation calcul dans JTable


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2009
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 72
    Par défaut Optimisation calcul dans JTable
    Salut à tous,

    je viens vers vous car j'ai un peu de mal avec cette fonction :
    -> je parcours chaque ligne de ma JTable :
    -> je compare chaque valeur à la colonne 23 ( correspondant à l'ordre de Strahler ) à la 1ère ligne qui me sert de référence.
    -> Dès que je trouve une ligne avec le même ordre de Strahler, je regarde si le nombre de mesure de la ligne est à plus ou moins 10000 de la valeur de référence ( celle de la 1ère ligne ).
    -> et je met en évidence des que j'ai trouvé la meilleure correspondance ( la plus proche de la valeur de référence ( qui doit obligatoirement avoir le meme ordre de Stralher ) avec table.setRowSelectionInterval(i, i);

    Mon problème est que je me vois mal faire sa tout les 1000 pour l'intervalle. Et sa marche pas terriblement bien ce que j'ai fait car je récupère la dernière valeur correspondant aux critères. Enfin bref, tout çà c'est bof.

    Un petit coup de pouce pour avoir quelque chose de propre avec un intervalle qui augmente si je trouve rien à 1000 d'écart puis 2000 etc etc et surtout bien garder la ligne la plus proche de la valeur de référence ( nbm )

    Merci d'avance ^_^

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    	private void aide_decision() {
    		int cpt=0;
    		Object cellule = table.getValueAt(0,23);
    		Object cellule2 = table.getValueAt(0, 22);
    		System.out.println(cellule.toString());
    		int ost = Integer.parseInt(cellule.toString());
    		int nbm = Integer.parseInt(cellule2.toString());
    		for(int i =1;i<table.getRowCount();i++){
    			Object compare = table.getValueAt(i, 23);
    			Object comp = table.getValueAt(i, 22);
    			int compare2 = Integer.parseInt(compare.toString());
    			int comp2 = Integer.parseInt(comp.toString());
    			if(compare2==ost){
    				int plusoumoins = 10000;
    				if(nbm<=(comp2+plusoumoins) && nbm>=(comp2-plusoumoins)){
    				System.out.println(compare2+" "+ost);
    				table.setRowSelectionInterval(i, i);
    				cpt++;
    			}
    				else {
    					int plusoumoins2 = 20000;
    					if(nbm<=(comp2+plusoumoins2) && nbm>=(comp2-plusoumoins2)){
    					System.out.println(compare2+" "+ost);
    					table.setRowSelectionInterval(i, i);
    					cpt++;
    					}
    				}
    			}
    		}
    	}

  2. #2
    Membre confirmé
    Inscrit en
    Juin 2009
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 72
    Par défaut
    personne n'a d'idée ?

  3. #3
    Membre émérite Avatar de JoeChip
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    536
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 536
    Par défaut
    Bin en fait, quelle est la question ? "Comment améliorer ton algorithme ?" ?

    Si c'est ça, déjà, il faut sortir de la boucle tout ce qui n'y est pas indispensable, par exemple la création d'objets ou de variables : toutes les initialisations doivent être faites avant la boucle, et non dedans.

  4. #4
    Membre confirmé
    Inscrit en
    Juin 2009
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 72
    Par défaut
    Citation Envoyé par JoeChip Voir le message
    Bin en fait, quelle est la question ? "Comment améliorer ton algorithme ?" ?

    Si c'est ça, déjà, il faut sortir de la boucle tout ce qui n'y est pas indispensable, par exemple la création d'objets ou de variables : toutes les initialisations doivent être faites avant la boucle, et non dedans.
    Oui c'est sa je cherche à amélioré l'algo efficacement =)

  5. #5
    Membre émérite Avatar de JoeChip
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    536
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 536
    Par défaut
    Bon alors, déjà, à plein d'endroits, tu répète ce genre de choses :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    			Object compare = table.getValueAt(i, 23);
    			int compare2 = Integer.parseInt(compare.toString());
    Pourquoi ne pas faire une méthode genre "Integer getCellInt(int x, int y)" ou "int getCellInt(int x, int y)" ? Déjà, ton code sera plus clair.

    Par ailleurs, il serait encore plus simple que cette méthode soit dans "table", après tout, c'est plutôt le boulot de la table que de fournir les valeurs des cellules...

    Enfin, il faut virer de l'intérieur de la boucle tout ce qui est déclaratif.

Discussions similaires

  1. Calcul dans les colonnes d'un jtable
    Par kassa2015 dans le forum Composants
    Réponses: 1
    Dernier message: 06/03/2015, 10h17
  2. Calcul dans une cellule de jTable
    Par L'aigle de Carthage dans le forum Composants
    Réponses: 1
    Dernier message: 12/11/2009, 14h49
  3. Selection listener dans JTable
    Par calypso dans le forum Composants
    Réponses: 3
    Dernier message: 02/08/2004, 17h56
  4. Calcul dans des champs de saisie
    Par leeloo076 dans le forum ASP
    Réponses: 4
    Dernier message: 07/04/2004, 10h09
  5. calcul dans une requête
    Par blaz dans le forum Langage SQL
    Réponses: 8
    Dernier message: 22/12/2003, 10h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo