HashMap中{2}数组的长度

时间:2016-08-29 18:30:43

标签: java

我在找出工作中程序所需的一些复杂逻辑时遇到了一些麻烦。

该计划旨在比较"交易"两个文件夹之间。每个文件夹可以包含任意数量的文件,每个文件(XML文档)可以包含任意数量的事务。每笔交易都有5个标签。

我必须比较两个文件夹,看看是否有任何交易匹配。

为此,我使用HashMap并在其中放置String[][]数组。 HashMap中的每个键代表1个文件。 String中的行将表示事务,列将表示标记。

我无法确定如何从String[][]中访问HashMap。我需要获得事务(行)的数量。

以下是我如何做到这一点:

// Creating the HashMap and Array[][]
public static Map<Integer, String[][]> Pain008TransactionsCollection = new HashMap();
public static String[][] Pain008Transactions;

//Here is the logic where I populate the HashMap.
int transactionSize = EndToEndId.size();

//Creates a 2D array with one dimension for each transaction and six dimensions
//for relevant tags + filename.
Pain008Transactions = new String[transactionSize][6];

//For each transaction..
for(int i = 0; i < transactionSize; i++){

    //Below will add each value into the 2D array for each transaction. Note that the
    //filename is also added so that it can be easily associated with a transaction later.
    Pain008Transactions[i][0]=EndToEndId.get(i);
    Pain008Transactions[i][1]=InstdAmt.get(i);
    Pain008Transactions[i][2]=MmbId.get(i);
    Pain008Transactions[i][3]=DbtrNm.get(i);
    Pain008Transactions[i][4]=OthrId.get(i);
    Pain008Transactions[i][5]=GetFiles.pain008Files.get(currentFile).toString();

}

//Puts the 2D array into the collections map at the position of the current 
//file in sequence.
Pain008TransactionsCollection.put(currentFile, Pain008Transactions);

System.out.println(Pain008TransactionsCollection);

我知道要获取HashMap密钥的总数,我会使用此功能:

Pain008TransactionsCollection.size()

我知道要获取String [] []的行我使用

Pain008Transactions.length()

但我不知道如何调用HashMap密钥然后获取该特定密钥的行长度。

任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:1)

迭代地图,例如

for (Entry<Integer, String[][]> entry : Pain008TransactionsCollection.entrySet() ) {
  Integer key = entry.getKey();
  String[][] data = entry.getValue();
}

多数民众赞成。或者我会错过什么?

您可以使用以下方法检索单个值及其维度:

String data[][] data = Pain008TransactionsCollection.get(0); 
int rowCount = data.length;
int columnCount = data[0].length;

例如。