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