2015-01-30 3 views
0

약간의 도움이 필요합니다.해시 맵에서 csv/excel로 쉽게?

난 트리 맵 내부 트리 맵을 TreeMap<String,TreeMap<String,Integer>> 내 텍스트 출력이 (1 행의 예)처럼 보이는

는 :

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

뜻 음소 Y가 7, I 인정 31 %로되었다고 , Y 등으로 7 % ...

결과적으로 나는 음소마다 수직 (선택된 음소)과 수평 (예측) 선을 가지고 있고 셀에서 선택된 선과 행에 해당하는 확률 . 즉, 예를 들어 "Y"행이 위와 같이 확률로 표시된다는 것을 의미합니다. 0 %

그게 최선의 해결책은 무엇입니까? 수동으로이 정보를 얻고 CSV로 순차적으로 저장해야합니까? 아니면 더 좋은 방법이 있습니까?

+0

API를 사용해야한다고 생각합니다. [여기] (http://stackoverflow.com/questions/3487123/creating-a-csv-file-in-java-from-a-hashmap) – fishi

+0

고마워, 나는 그것을 시도합니다! – Lukadlo

답변

1

특히 데이터에 특수 문자가 포함될 것으로 예상되는 경우 API 사용에 문제가 없습니다. 그러나 여기 당신이 사용할 수있는 자바 8 일 라이너와 당신이 CSV API를이 경우에도 청소기 다음과 같습니다

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

0

다음은 외부 라이브러리없이 전통적인 Java를 사용하여 표 형식의 CSV 출력을 생성하는 예입니다. 그럼 당신은 단지 .CSV 파일로 출력하는 쓰기 및 Excel에서 열 수 있습니다

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

:

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%] 

위의 메소드가 리턴 : (Map<String, Map<String, Integer>> 등)이 입력을 사용

static String toCSV(Map<String, Map<String, Integer>> phonemeStats) 
{ 
    StringBuilder csv = new StringBuilder(512); 

    // get ordered set of all statistic names 
    Set<String> statNames = new TreeSet<String>(); 
    for (Map<String, Integer> stats: phonemeStats.values()) { 
     statNames.addAll(stats.keySet()); 
    } 

    // write column headings line 
    csv.append("phoneme"); 
    for (String name: statNames) { 
     csv.append(",").append(name); 
    } 

    // write each phoneme line 
    for (Map.Entry<String, Map<String, Integer>> entry: phonemeStats.entrySet()) { 
     csv.append(System.lineSeparator()); 
     csv.append(entry.getKey()); 
     for (String name: statNames) { 
      Integer value = entry.getValue().get(name); 
      csv.append(","); 
      if (value != null) { 
       csv.append((value/100d) + "%"); 
      } 
     } 
    } 

    return csv.toString(); 
} 

.

관련 문제