Bonjour,

J'ai un problème avec un HashMap que j'utilise.
J'explique brièvement le contexte :
Je parcours un fichier texte qui contient plusieurs lignes, chaque ligne du fichier est séparé en deux par une regex, la première partie (le header), est insérée en clé, et le reste de la ligne est inséré en valeur du Map.
Le problème est que la deuxième ligne (dont le header est différent de la première ligne) prend la place de la première alors que les valeurs sont différentes. La troisième ligne(il n' y a que 3 lignes dans le fichier que je teste) quant-à elle s'ajoute correctement. Je ne comprend pas pourquoi la deuxième ligne prend la place de la première.

Le fichier texte que je lis :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
"C","rh             ","PR2655    ","X966      ","25 Oct 2004","CAJ4519Z  ",230,50,25,35,0,0,5,+1.349314845255670E+04,-2.712601587502600E+01,+2.180848946738310E-02,-8.749904977140720E-06,+1.751666718999900E-09,-1.400290707153010E-13,0,0,0,0,0,0,0,0,0,0,+9.998473068012700E-01,+2.300000007351730E+02,-1.436213609428470E-09,+1.117750481277860E-12,-4.332080050870580E-16,+8.361880540944660E-20,-6.431260861353930E-24,0,0,0,0,0,0,0,0,0,0,+0.000000000000000E+00,-2.405720560349160E+04,+4.785658657128120E+01,-3.758508289953010E-02,+1.471039632999100E-05,-2.875184472672180E-09,+2.256773343172310E-13,0,0,0,0,0,0,0,0,0,0,+9.999820272170920E-01,-3.616941558087430E+04,+7.121773429436650E+01,-5.555739799625170E-02,+2.147389169781680E-05,-4.095832253442660E-09,+3.065850794478490E-13,0,0,0,0,0,0,0,0,0,0,+9.999869891535360E-01,+2.265158196029000E+04,-4.793450122745750E+01,+4.060432184423980E-02,-1.714168285222780E-05,+3.609575423795100E-09,-3.026835909605690E-13,0,0,0,0,0,0,0,0,0,0,+9.999915890181570E-01,-1.159370225459020E+04,+2.324582003407840E+01,-1.852171479528530E-02,+7.353329207024350E-06,-1.454427856073720E-09,+1.144959129518830E-13,0,0,0,0,0,0,0,0,0,0,+9.999722303655260E-01,-4.881659561795540E+04,+9.820984944683960E+01,-7.875898510409510E-02,+3.149515184154870E-05,-6.280345833056300E-09,+4.994289495665480E-13,0,0,0,0,0,0,0,0,0,0,+9.998055982536970E-01,-6.822779194425980E+02,+1.359989277322210E+00,-1.076972757680860E-03,+4.251787039510540E-07,-8.374140097683170E-11,+6.594881864605560E-15,0,0,0,0,0,0,0,0,0,0,+9.999275909842580E-01,-1.316413051204350E+06,+2.646814738235750E+03,-2.107717176216150E+00,+8.349841612352830E-04,-1.643937459203110E-07,+1.282735546493060E-11,0,0,0,0,0,0,0,0,0,0,+9.999914285560770E-01,+0.000000000000000E+00,+1.000000000000000E+00,+0.000000000000000E+00,+0.000000000000000E+00,+0.000000000000000E+00,+0.000000000000000E+00,0,0,0,0,0,0,0,0,0,0,+1.000000000000000E+00,+0.000000000000000E+00,+0.000000000000000E+00,+0.000000000000000E+00,+0.000000000000000E+00,+0.000000000000000E+00,+0.000000000000000E+00,0,0,0,0,0,0,0,0,0,0,+0.000000000000000E+00,+0.000000000000000E+00,+0.000000000000000E+00,+0.000000000000000E+00,+0.000000000000000E+00,+0.000000000000000E+00,+0.000000000000000E+00,0,0,0,0,0,0,0,0,0,0,+0.000000000000000E+00,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
"C","rh             ","PR2655    ","X966      ","25 Oct 2004","CAJ4519Z  ",253,50,120,35,0,0,5,+7.191222438008560E+03,-1.471820036264630E+01,+1.206403100149950E-02,-4.934407487715490E-06,+1.006771443273210E-09,-8.201885863835780E-14,0,0,0,0,0,0,0,0,0,0,+9.998958694217330E-01,+2.529999991332200E+02,+1.726782086707090E-09,-1.369285030697200E-12,+5.402726147250920E-16,-1.060800627164650E-19,+8.292708044041960E-24,0,0,0,0,0,0,0,0,0,0,+0.000000000000000E+00,+1.933520587239170E+03,-4.229190493563290E+00,+4.168084412137960E-03,-2.019024303819790E-06,+4.788599899589320E-10,-4.371188659859830E-14,0,0,0,0,0,0,0,0,0,0,+9.999949001672690E-01,-2.360719491058720E+04,+4.844474606229680E+01,-3.938772346059290E-02,+1.590313481479540E-05,-3.176430486551920E-09,+2.496589601726130E-13,0,0,0,0,0,0,0,0,0,0,+9.999911513669070E-01,-1.171878684514500E+04,+2.261082307152880E+01,-1.701519735985610E-02,+6.274119432435520E-06,-1.121415616124440E-09,+7.721251539696240E-14,0,0,0,0,0,0,0,0,0,0,+9.999729195720420E-01,-1.101737206005470E+04,+2.269192089166930E+01,-1.857205764464940E-02,+7.574116477242510E-06,-1.539382608428180E-09,+1.246205668977250E-13,0,0,0,0,0,0,0,0,0,0,+9.999341595919720E-01,-1.915587317783390E+04,+3.980461502008860E+01,-3.293275425650420E-02,+1.358672715191830E-05,-2.795519164600870E-09,+2.293793826696370E-13,0,0,0,0,0,0,0,0,0,0,+9.999388326274640E-01,-3.388009750907920E+02,+6.845405832262020E-01,-5.449747154089940E-04,+2.153860615908470E-07,-4.226485852577590E-11,+3.302866492388240E-15,0,0,0,0,0,0,0,0,0,0,+9.999907416241190E-01,-6.491645736644400E+05,+1.361488357834960E+03,-1.123790981297780E+00,+4.616864062460210E-04,-9.436503740381630E-08,+7.643048206887390E-12,0,0,0,0,0,0,0,0,0,0,+9.999926036137280E-01,+0.000000000000000E+00,+1.000000000000000E+00,+0.000000000000000E+00,+0.000000000000000E+00,+0.000000000000000E+00,+0.000000000000000E+00,0,0,0,0,0,0,0,0,0,0,+1.000000000000000E+00,+0.000000000000000E+00,+0.000000000000000E+00,+0.000000000000000E+00,+0.000000000000000E+00,+0.000000000000000E+00,+0.000000000000000E+00,0,0,0,0,0,0,0,0,0,0,+0.000000000000000E+00,+0.000000000000000E+00,+0.000000000000000E+00,+0.000000000000000E+00,+0.000000000000000E+00,+0.000000000000000E+00,+0.000000000000000E+00,0,0,0,0,0,0,0,0,0,0,+0.000000000000000E+00,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
"C","rh             ","PR2655    ","X966      ","25 Oct 2004","CAJ4519Z  ",198,50,120,35,0,0,5,+5.973921180313570E+03,-1.233554504984340E+01,+1.020621155645270E-02,-4.212978573312900E-06,+8.672460774781730E-10,-7.126701119066820E-14,0,0,0,0,0,0,0,0,0,0,+9.998885953621860E-01,+1.979999996830220E+02,+6.370454158329780E-10,-5.096703907069510E-13,+2.029191542477880E-16,-4.020726909118240E-20,+3.172222857042650E-24,0,0,0,0,0,0,0,0,0,0,+0.000000000000000E+00,-2.032046742827670E+04,+4.288405721445690E+01,-3.573853182677260E-02,+1.484421347380370E-05,-3.075624715781730E-09,+2.550935110958830E-13,0,0,0,0,0,0,0,0,0,0,+9.999147297090120E-01,-3.579270466342700E+03,+7.126282331385670E+00,-5.497987373893370E-03,+2.071816358570770E-06,-3.727585642276440E-10,+2.442623082243750E-14,0,0,0,0,0,0,0,0,0,0,+9.999891461161700E-01,+2.132751246724120E+04,-4.417478187305210E+01,+3.658149817872510E-02,-1.507827309342770E-05,+3.097017600228910E-09,-2.531386148745800E-13,0,0,0,0,0,0,0,0,0,0,+9.999486780183770E-01,-9.626020271543130E+02,+2.046666698354260E+00,-1.682554379857230E-03,+6.869668297817040E-07,-1.394893985332380E-10,+1.118277383644710E-14,0,0,0,0,0,0,0,0,0,0,+9.999934412238110E-01,-1.946915955765920E+04,+4.036383436561290E+01,-3.329902002844330E-02,+1.368282023742350E-05,-2.800739757863160E-09,+2.283751240456410E-13,0,0,0,0,0,0,0,0,0,0,+9.996252456738040E-01,-5.265847609812070E+01,+1.242949267799280E-01,-1.119955993564470E-04,+5.019798692967710E-08,-1.121939906963540E-11,+1.008261524578600E-15,0,0,0,0,0,0,0,0,0,0,+9.998348206754190E-01,-1.562926199337200E+05,+3.333402855671780E+02,-2.740501755782740E-01,+1.116860806681670E-04,-2.254515343104570E-08,+1.784201941684750E-12,0,0,0,0,0,0,0,0,0,0,+9.999907698033550E-01,+0.000000000000000E+00,+1.000000000000000E+00,+0.000000000000000E+00,+0.000000000000000E+00,+0.000000000000000E+00,+0.000000000000000E+00,0,0,0,0,0,0,0,0,0,0,+1.000000000000000E+00,+0.000000000000000E+00,+0.000000000000000E+00,+0.000000000000000E+00,+0.000000000000000E+00,+0.000000000000000E+00,+0.000000000000000E+00,0,0,0,0,0,0,0,0,0,0,+0.000000000000000E+00,+0.000000000000000E+00,+0.000000000000000E+00,+0.000000000000000E+00,+0.000000000000000E+00,+0.000000000000000E+00,+0.000000000000000E+00,0,0,0,0,0,0,0,0,0,0,+0.000000000000000E+00,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Je coupe chaque ligne entre les informations, puis les valeurs positive ou négatives.

La méthode que j'utilise pour parcourir mon fichier et compléter le Map :

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
public static Map<String, String> readPolynomialFile(InputStream polynomialFileIs) throws IOException{
		Map<String, String> tests = new HashMap<>();
		//Lecture du flux du fichier 
		InputStreamReader isr = new InputStreamReader(polynomialFileIs);
		BufferedReader br = new BufferedReader(isr);
		String line = null;
 
		//Regex permettant de séparer les fichiers polynômes en deux parties :
		//-la partie contenant les informations de l'essai
		//-la partie contenant tout les coefficients des polynômes. 
		Pattern regex = Pattern.compile("([^\\+|-]*)([+|-].*)");
		Matcher matcher;
		String headers;
		String coeffs;
		while((line = br.readLine()) != null){ //parcours des ligne du fichier
			matcher = regex.matcher(line);
			while(matcher.find()){ //traitement matcher
				headers = matcher.group(1);
				headers = StringUtils.removeEnd(headers, ",");
				coeffs = matcher.group(2);
 
				tests.put(headers, coeffs);
			}			
		}
 
		return tests;		
	}
Pour le coup je me demande si je suis parti dans la bonne direction en utilisant un HashMap avec String en clé.

Si vous avez une idée je suis preneur