Если вы возьмете свой вложенный список ...
[ [1,2], [3], [4,5,6] ]
... вы могли бы подумать об этом по-другому.
0: [1, 2]
1: [3]
2: [4, 5, 6]
То есть у вас естьдвухмерное представление вашего списка из-за его вложенного свойства.Строка 0 содержит значения 1 и 2, строка 1 содержит 3, а строка 2 содержит 4, 5 и 6.
Когда вы пишете
colIter == null || !colIter.hasNext()) && rowIter.hasNext()
То, что вы проверяете, этоэто:
- Есть ли там столбец?
- Если есть,
- Не исчерпали ли мы итерация столбца И есть ли у нас что-то еще для чтения из наших строк?
Рассмотрим вложенный список следующим образом:
0: [1, 2]
1: []
2: [3, 4, 5]
Для строки 1 определенно - это столбец, но у нас нет никаких значений для обработки, и есть что-то еще, что мы можем перейти к этой записи.
Если мы 'в конце вложенного списка, тогда я ожидал бы, что вызов colIter.next()
вызовет NoSuchElementException
вместо возврата null
.Вы можете захотите разобраться в этом.