2014-11-23 4 views
1

입니다. csv 파일을 구문 분석 할 때 각 열을 추가하면 목록에 추가되고 각 목록은 map에 추가됩니다. 각지도에서 키는 목록의 첫 번째 줄입니다.목록에있는 자바 액세스는

 CSVReader reader = new CSVReader(new FileReader("plik.csv"),';'); 
     CSVReader ile = new CSVReader(new FileReader("plik.csv"),';'); 

     int columnCount=0; 
     String[] header = ile.readNext(); // assuming first read 

     if (header != null) {      // and there is a (header) line 
       columnCount = header.length;  // get the column count 
     } 


     HashMap<String, List<String>> map = new HashMap<String, List<String>>(); 

     List content = reader.readAll(); 
     String[] row; 
     String key; 
     int column=0; 

     for(int i=0; i <columnCount-1; i++) { 
      List<String> lista = new ArrayList<String>(); 
       key=null; 
      for (Object object : content) { 

       row = (String[]) object; 
       if (column== 0) { 
        key = row[i]; 
       } 
       if (kolumna != 0) { 

        lista.add(row[i]); 
        map.put(key, lista); 
       } 
       kolumna++; 
      } 
      kolumna=0; 
     } 

이 작업이 끝나면이 목록의 반복 가능성에 액세스하고 싶습니다.

나는

for (String q: map.keySet()) { 
             System.out.println (q + "-" + map.get (q)); 
         } 

를 사용하여이 작업을 수행하고 싶어하지만 결과는 각 목록은 각 라인에 szytwno에 표시됩니다 있다는 것입니다. 나는 예를 들어 던지기를 원하는 목록의 개별 항목에 액세스 할 수 없습니다. 드롭 다운 스윙.

출력 :

Datum - [07.10.2014, 07.10.2014, 07.10.2014] 
ProzessID - [1180804, 1180804, 335605] 

키 : Datum, ProzessID

답변

1

시도 대신) map.entrySet를 (사용 :

 for (Entry<String, List<String>> entry : map.entrySet()) 
     { 
      System.out.println(entry.getKey() + ":"); 
      for (String s : entry.getValue()){ 
       System.out.println(s); 
      } 
     } 
+1

이 이미 시도했다. 데이터도 같은 방식으로 표시됩니다. 항목을 나열하고 싶습니다. ','및'['로 구분하지 않았습니다. 아마 루프에서 루프를 할 필요가 있을까요? 그래서 같은 목록의 반복을 제어 할 수 있습니다. 그는 목록에있는 데이터를 JComboBox에 추가하려고합니다. 그래서 당신은'1180804' 또는'1180804' 또는'335605'를 선택할 수 있습니다. '[1180804, 1180804, 335605]'행 전체가 아닙니다. – lukassz

+2

대괄호와 콜론은 목록의 toString() 메서드에 의해 만들어집니다. 그것들을 다르게 표시하려면 목록 자체의 각 항목에 액세스해야합니다. ComboBox에 addAll 메서드가 있다는 것을 알고 계십니까? comboBox.getItems(). addAll (entry.getValue()); – Tobi

+1

죄송합니다. JComboBox를 사용하고 JavaFX를 사용하지 않는 것을 본 다음 목록의 요소를 반복하여 반복하십시오. – Tobi