Queue.kt 807 B

12345678910111213141516171819202122232425262728293031
  1. package eu.mjdev.desktop.helpers.internal
  2. @Suppress("unused")
  3. class Queue<E>(
  4. val source: Collection<E>
  5. ) : Iterator<E> {
  6. var iterator: Iterator<E> = source.iterator()
  7. override fun hasNext(): Boolean = source.isNotEmpty()
  8. @Deprecated(
  9. message = "Deprecated please use for safety nextOrNull().",
  10. )
  11. override fun next(): E = when {
  12. source.isEmpty() -> throw (IllegalStateException("Source is empty."))
  13. iterator.hasNext() -> iterator.next()
  14. else -> {
  15. iterator = source.iterator()
  16. iterator.next()
  17. }
  18. }
  19. fun nextOrNull(): E? = when {
  20. source.isEmpty() -> null
  21. iterator.hasNext() -> iterator.next()
  22. else -> {
  23. iterator = source.iterator()
  24. nextOrNull()
  25. }
  26. }
  27. }