Hashmap dans csv / excel facilement?

J'aurais besoin d'un peu d'aide.

J'ai TreeMap dans TreeMap TreeMap<Ssortingng,TreeMap<Ssortingng,Integer>>

La sortie de mon text ressemble à ceci (exemple de ligne unique):

 Phoneme "Y": ["**"=46,15%] ["I"=30,77%] ["Y"=7,69%] ["i:"=15,38%] 

Cela signifie que le phonème Y est dans 31% reconnu comme I, dans 7,7% comme Y etc …

Par conséquent, j'ai besoin d'une table (feuille de calcul) qui comporte des lignes verticales (phonèmes sélectionnées) et horizontales (prédiction) chaque phonème et dans les cellules la probabilité correspondant à la ligne et à la ligne sélectionnées. Cela signifie que, par exemple, la ligne «Y» serait une probabilité indiquée ci-dessus, tout le rest 0%

Quelle serait la meilleure solution pour cela? Devrais-je le programmer manuellement pour get ces informations et l'save séquentiellement dans csv ou y a-t-il une meilleure façon?

Il n'y a rien de mal à utiliser une API, surtout si vous attendez que vos données contiennent des caractères spéciaux. Cependant, voici un packageage Java 8 que vous pourriez utiliser et si vous avez une API CSV, il serait encore plus propre:

 treeMap.entrySet().forEach((e)->{ System.out.print("\""+e.getKey()+"\""); e.getValue().entrySet().forEach((m)->System.out.print(",\"" + m.getKey() + "\"," + m.getValue())); System.out.println(); }); 

"Y", "**", 46.15, "I", 30.77, "Y", 7.69, "i", 15.38

Voici un exemple de création de sortie CSV tabulaire à l'aide de Java traditionnel sans bibliothèques externes.

 static Ssortingng toCSV(Map<Ssortingng, Map<Ssortingng, Integer>> phonemeStats) { SsortingngBuilder csv = new SsortingngBuilder(512); // get ordered set of all statistic names Set<Ssortingng> statNames = new TreeSet<Ssortingng>(); for (Map<Ssortingng, Integer> stats: phonemeStats.values()) { statNames.addAll(stats.keySet()); } // write column headings line csv.append("phoneme"); for (Ssortingng name: statNames) { csv.append(",").append(name); } // write each phoneme line for (Map.Entry<Ssortingng, Map<Ssortingng, Integer>> entry: phonemeStats.entrySet()) { csv.append(System.lineSeparator()); csv.append(entry.getKey()); for (Ssortingng name: statNames) { Integer value = entry.getValue().get(name); csv.append(","); if (value != null) { csv.append((value / 100d) + "%"); } } } return csv.toSsortingng(); } 

En utilisant cette input (comme Map<Ssortingng, Map<Ssortingng, Integer>> ):

 Phoneme "Y": ["**"=46,15%] ["I"=30,77%] ["Y"=7,69%] ["i:"=15,38%] Phoneme "Z": ["**"=32,45%] ["I"=10,42%] ["X"=26,97%] ["i:"=5,38%] 

La méthode ci-dessus renvoie:

 phoneme,**,I,X,Y,i: Y,46.15%,30.77%,,7.69%,15.38% Z,32.45%,10.42%,26.97%,,5.38% 

Ensuite, vous pouvez simplement écrire cette sortie sur un file .CSV et l'ouvrir dans Excel.