-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);
どのように私は同じのための出力を達成することができますか?
どのような種類のヘルプが推奨されるのですか。
あなたは、キーが 'user1'、' user2'、 'user3'であることを望んだと言いました。なぜ、' user'キーを使ってすべての行を追加していますか? ---マップの主な特徴の1つは、重複キーが許可されないということですか?したがって、同じキーを3回追加すると、最後のaddだけが 'Map'に残ります。私はなぜ結果について混乱しているのか混乱しています。 – Andreas
'hashMap.put(" user "+ currentRow.getRowNum()、listN);'がうまくいくかもしれません。 – Andreas
すべての行のセル値を1つの 'ArrayList'に追加しています。これは、各行の新しい 'ArrayList'でなければなりません。そして、すべての 'ArrayList'を' user 'という名前の 'HashMap'に入れています。期待される結果から、それは別のキー "user1"、 "user2"、...各行でなければなりません。しかし、主に細胞のループは非論理的です。行とセルに 'Iterator'を使い、行とセルに' for'ループを追加しています。どちらか一方を実行してください。そして、btw:ここで 'noOfRow'と' noOfColumn'はどこから来ていますか? –