我在找出工作中程序所需的一些复杂逻辑时遇到了一些麻烦。
该计划旨在比较"交易"两个文件夹之间。每个文件夹可以包含任意数量的文件,每个文件(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
密钥然后获取该特定密钥的行长度。
任何帮助都会非常感激。
答案 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;
例如。