Длина двумерного массива внутри HashMap
У меня есть немного проблемы с выяснением сложной логики, необходимой для работы программы.
Эта программа предназначена для сравнения "транзакций" между двумя папками. Каждая папка может содержать любое количество файлов, и каждый файл (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
а затем получить длину строки для этого конкретного ключа.
Любая помощь могла бы быть полезна.
Вы перебираете карту, например
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;
например.