2017-07-22 12 views
-2

に値を挿入しながら、私はデータを以下のようになりますExcelファイルを持っています。だから、私は使用して複数の値を持つ単一のキーを使用してHashMapのオブジェクトを作成しました:は、HashMapのジャワ

HashMap<String, List<String>> hashMap = new HashMap<String, List<String>>(); 
List<String> listN = new ArrayList<String>(); 

今、私は、このような方法で、キーを使用して値を印刷したい:

user1 ---> [firstName, lastName, companyName, domainName, comName, emailLogin, passwordLogin, personalEmail] 
user2 ---> [ccc, ccc, aaa, bbb, vvv, [email protected], abc, N] 
user3 ---> [sss, sss, aaa, fff, vvv, [email protected], abc, N] 

以下の私のコードを見つけてください。私がこれまでに下回ってみました:

HashMap<String, List<String>> hashMap = new HashMap<String, List<String>>(); 
      List<String> listN = new ArrayList<String>(); 

      while (iterator.hasNext()) { 

       Row currentRow = iterator.next(); 
       Iterator<Cell> cellIterator = currentRow.iterator(); 

       while (cellIterator.hasNext()) { 

        Cell currentCell = cellIterator.next(); 
        //getCellTypeEnum shown as deprecated for version 3.15 
        //getCellTypeEnum ill be renamed to getCellType starting from version 4.0 

        for(int j=0; j<noOfRow; j++){ 
         for(int i=0; i<noOfColumn; i++){ 
          if (currentCell.getRowIndex() == j && currentCell.getColumnIndex() == i) { 

           listN.add(currentCell.getStringCellValue()); 


          } else if (currentCell.getCellTypeEnum() == CellType.NUMERIC) { 
           System.out.print(currentCell.getNumericCellValue()+ "--"); 
          } 
         } 
        } 
       } 
       hashMap.put("user", listN); 
      } 

      for (Entry<String, List<String>> entry : hashMap.entrySet()) { 
       String key = entry.getKey(); 
       Object value = entry.getValue(); 

       System.out.println(key+" ---> "+value); 
      } 

      System.out.println(); 

私は1行のループと印刷の値の間に下記立ち往生取得していますが、以下の私の出力を見つける:

ここ
user ---> [firstName, lastName, companyName, domainName, comName, emailLogin, passwordLogin, personalEmail, ccc, ccc, aaa, bbb, vvv, [email protected], abc, N, sss, sss, aaa, fff, vvv, [email protected], abc, N] 

私は立ち往生しています私のコードです:

for(int j=0; j<noOfRow; j++){ 
          for(int i=0; i<noOfColumn; i++){ 
           if (currentCell.getRowIndex() == j && currentCell.getColumnIndex() == i) { 

            listN.add(currentCell.getStringCellValue()); 


           } else if (currentCell.getCellTypeEnum() == CellType.NUMERIC) { 
            System.out.print(currentCell.getNumericCellValue()+ "--"); 
           } 
          } 
         } 
hashMap.put("user", listN); 

どのように私は同じのための出力を達成することができますか?

どのような種類のヘルプが推奨されるのですか。

+1

あなたは、キーが 'user1'、' user2'、 'user3'であることを望んだと言いました。なぜ、' user'キーを使ってすべての行を追加していますか? ---マップの主な特徴の1つは、重複キーが許可されないということですか?したがって、同じキーを3回追加すると、最後のaddだけが 'Map'に残ります。私はなぜ結果について混乱しているのか混乱しています。 – Andreas

+0

'hashMap.put(" user "+ currentRow.getRowNum()、listN);'がうまくいくかもしれません。 – Andreas

+0

すべての行のセル値を1つの 'ArrayList'に追加しています。これは、各行の新しい 'ArrayList'でなければなりません。そして、すべての 'ArrayList'を' user 'という名前の 'HashMap'に入れています。期待される結果から、それは別のキー "user1"、 "user2"、...各行でなければなりません。しかし、主に細胞のループは非論理的です。行とセルに 'Iterator'を使い、行とセルに' for'ループを追加しています。どちらか一方を実行してください。そして、btw:ここで 'noOfRow'と' noOfColumn'はどこから来ていますか? –

答えて

0
  • このコードスニペットは、それが単に「のSystem.out.println(キー+」後

      public static void main(String[] args) { 
           Map<String, List<String>> keyValue = new HashMap<>(); 
           String[] value1 ={"hello","world"}; 
           String[] value2 ={"hey","stackovr"}; 
           keyValue.put("key1", Arrays.asList(value1)); 
           keyValue.put("key2", Arrays.asList(value2)); 
           for (Entry<String, List<String>> set : keyValue.entrySet()) { 
            System.out.print(set.getKey()+" ---> "+set.getValue()); 
            System.out.println(); 
           } 
          } 
    
  • 使用するSystem.out.println()を助けることができるかどうかを確認、あなたが望むように出力します--->「+値)」

  • O/P

    key1 ---> [hello, world] key2 ---> [hey, stackoverflow]