Получение данных из коллекции карт с 2 int в качестве параметров

#java #collections #map #iterator

#java #Коллекции #словарь #итератор

Вопрос:

У меня есть переменная типа:

 Collection<Map<String, String>> allFieldValues;
  

В этой переменной у меня есть все данные таблицы sqlite, каждая карта коллекции представляет строку таблицы.

Теперь мне нужно взять данные из конкретной ячейки, мои параметры равны 2 целым числам (номер строки, номер столбца), поэтому я пытаюсь сделать что-то вроде этого:

 Iterator<Map<String, String>> iter = allFieldValues.iterator();
for (int i = 0; i == givenRowAsParameter; i  )
{
    iter.next();
}
  

И это все, итерация, которую я получаю из цикла, предполагается, что это строка, которую я хочу, но я не могу использовать другой итератор из этого итератора для поиска столбца, также я не могу получить конкретный объект итератора, используя только int в качестве параметра. Итак, я застрял: (

Есть предложения? большое спасибо!

Ответ №1:

Следуя вашей методологии определения индекса строки, вы можете использовать:

 Iterator<Map<String, String>> iter = allFieldValues.iterator();
Map<String, String> row;
for (int i = 0; i <= rowIndex; i  ) {
    row = iter.next();
}

String col;
Iterator<String> iter2 = row.values().iterator();
for (int i = 0; i <= colIndex; i  ) {
    col = iter2.next();
}
  

Комментарии:

1. Большое спасибо, чувак, отличный ответ, не знал о методе .values(). все еще не знаю, почему я должен использовать это для получения итератора, но это работает!! Спасибо!

2. @jose Карта содержит ключи (возможно, имена столбцов в вашем случае), доступные через keySet() метод, а также values() коллекцию, которую вы используете для перебора значений полей. Когда у вас будет возможность, пожалуйста, отметьте ответ как принятый.