Advertisement
Guest User

Untitled

a guest
Dec 13th, 2019
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.75 KB | None | 0 0
  1. package tanks2019
  2.  
  3. import java.util.Hashtable
  4. import java.util.LinkedList
  5. import kotlin.collections.Iterator
  6.  
  7. /**
  8. * Итератор для Hashtable<String, LinkedList<UObject>>.
  9. * @param table - Хэш-таблица, для которой определены следующие свойства:
  10. * - Ключом таблицы должен быть тип String
  11. * - Значением таблицы должен быть LinkedList<UObject>
  12. * @author Eugene Shevchugov
  13. */
  14. class MyIterator<T>(private val table: Hashtable<String, LinkedList<T>>) : Iterator<T> {
  15.  
  16. private var result : Int = 0
  17. private var current : Int = 0
  18.  
  19. init {
  20. val count = table.forEach { _, u -> result += u.size }
  21. }
  22.  
  23.  
  24. private var iteratorTable = table.iterator()
  25. private var listIter = LinkedList<T>().iterator()
  26.  
  27. /**
  28. * Проверяет наличие следующего элемента в Hashtable.
  29. * Возвращает true, если следующий элемент в таблице присутствует.
  30. * Возвращает false, если следующий элемент в таблицу отсутствует.
  31. * @author Eugene Shevchugov
  32. */
  33. override fun hasNext(): Boolean {
  34. return current < result
  35. }
  36.  
  37.  
  38. /**
  39. * Переходит к следующему элементу таблицы.
  40. * @throws NoSuchElementException - если следующего элемента нет
  41. * @author Eugene Shevchugov
  42. */
  43. override fun next(): T {
  44. while (!listIter.hasNext() && iteratorTable.hasNext()) {
  45. current++
  46. listIter = iteratorTable.next().value.iterator()
  47. }
  48. return listIter.next()
  49. }
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement