j ai ajouté : metiersNous = new ArrayList<Metier>(); Ca a l air de marcher, mais je sais pas pourquoi ;-) Sigrid LEHUTA a écrit :
Merci ca compile ! par contre ca ne tourne pas... cette ligne pose probleme :
metiersNous.add(met);
null pointer exception la premiere fois qu il la rencontre. est ce que ca ne suffit pas de declarer protected List<Metier> metiersNous; ?
Merci
Eric Chatellier a écrit :
Le 02/02/2010 12:32, Sigrid LEHUTA a écrit :
Merci pour ta réponse. ca n'est pas tout à fait ça, mais ca confirme ce que je pensais faire. En fait il s agit des metiers on cree des matrices <Metier, coeff> MatrixND matCoeffRum0 = MatrixFactory.getInstance().create( "matCoeffRum0", new List[]{ metiers,coeffRum}, new String[]{"Metiers","Coeff"});
que l on rempli avec des tableaux importés depuis des csv. le pb c est que l ordre des metiers dans les tableaux csv est different de celui dans la liste metiers (siMatrix.getMetiers(date)).
En effet, je viens de vérifier ce code, cette méthode retourne une liste ordonnée mais sa construction dépend de l'ordre des statégies dans les paramètres et d'une collection non ordonnée : SetOfVessels.getPossibleMetiers()
Du coup je voulais, creer les matrices en utilisant non pas la liste metiers mais une liste des metiers ordonnés comme dans les csv (list<Metier> metiersNous). C'est bien ce que tu proposais ? Une SortedMap est plus pratique ?
et apres on creerait la matrice de cette facon : MatrixND matCoeffRum0 = MatrixFactory.getInstance().create( "matCoeffRum0", new List[]{ metiersNous,coeffRum}, new String[]{"Metiers","Coeff"});
Reste a creer la liste/Map metiersNous, j ai essayé comme ça : protected List<Metier> metiers; protected List<Metier> metiersNous; protected List<String> metiersNomsNous;
metiersNomsNous = new ArraysList <String>(){"Espagnols", "BolincheProfil2lan", "BolincheProfil2nord","Autre","PelProfil1Gironde", "PelProfil1Landes", "PelProfil1Nord", "PelProfil1Rochebonne", "PelProfil2Gironde", "PelProfil2Landes", "PelProfil2Nord", "PelProfil2Rochebonne", "BolincheProfil1gir", "BolincheProfil1lan"}; for(int i = 0; i<metiersNomsNous.size(); i++){ for (Metier met : metiers){ if(met.getName().equals(metiersNomsNous.getValue(i))){ metierNous.add(met); } } }
Mais je ne dois pas bien declarer ma liste parce qu il rale .... :-(
Peux tu m expliquer ?
Il y a un mix list/tableau là :) new String[] { init } ne fonctionne que pour les tableaux. Pour les listes il faut ajouter les éléments un par un.
Essaye cette synthaxe (j'ai pas testé) :
protected List<Metier> metiers; protected List<Metier> metiersNous;
String[] metiersNomsNous = new String[]{"Espagnols", "BolincheProfil2lan", "BolincheProfil2nord","Autre","PelProfil1Gironde", "PelProfil1Landes", "PelProfil1Nord", "PelProfil1Rochebonne", "PelProfil2Gironde", "PelProfil2Landes", "PelProfil2Nord", "PelProfil2Rochebonne", "BolincheProfil1gir", "BolincheProfil1lan"}; for(String metiersNomCurrent : metiersNomsNous){ for (Metier met : metiers){ if(met.getName().equals(metiersNomCurrent)){ metierNous.add(met); } } }
Ce code fonctionne aussi, une SortedMap n'est pas forcement nécessaire.
MERCI
-- Sigrid LEHUTA ~ ><> ~ Doctorante Département Ecologie et Modèles pour l'Halieutique IFREMER, rue de l'ile d'Yeu BP 21105 44311 Nantes Cedex 03 Tél : +33 (0)2 40 37 41 23 (interne : 8123)