Длина двумерного массива внутри HashMap

56

У меня есть немного проблемы с выяснением сложной логики, необходимой для работы программы.

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

Любая помощь могла бы быть полезна.

спросил(а) 2016-08-29T21:30:00+03:00 4 года назад
1
Решение
57

Вы перебираете карту, например

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;

например.

ответил(а) 2016-08-29T21:37:00+03:00 4 года назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема