Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package tanks2019
- import java.util.Hashtable
- import java.util.LinkedList
- import kotlin.collections.Iterator
- /**
- * Итератор для Hashtable<String, LinkedList<UObject>>.
- * @param table - Хэш-таблица, для которой определены следующие свойства:
- * - Ключом таблицы должен быть тип String
- * - Значением таблицы должен быть LinkedList<UObject>
- * @author Eugene Shevchugov
- */
- class MyIterator<T>(private val table: Hashtable<String, LinkedList<T>>) : Iterator<T> {
- private var result : Int = 0
- private var current : Int = 0
- init {
- val count = table.forEach { _, u -> result += u.size }
- }
- private var iteratorTable = table.iterator()
- private var listIter = LinkedList<T>().iterator()
- /**
- * Проверяет наличие следующего элемента в Hashtable.
- * Возвращает true, если следующий элемент в таблице присутствует.
- * Возвращает false, если следующий элемент в таблицу отсутствует.
- * @author Eugene Shevchugov
- */
- override fun hasNext(): Boolean {
- return current < result
- }
- /**
- * Переходит к следующему элементу таблицы.
- * @throws NoSuchElementException - если следующего элемента нет
- * @author Eugene Shevchugov
- */
- override fun next(): T {
- while (!listIter.hasNext() && iteratorTable.hasNext()) {
- current++
- listIter = iteratorTable.next().value.iterator()
- }
- return listIter.next()
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement