🧠 Хитрая Java-задача: «Клонируемый итератор с разделяемым буфером» Уровень: 💥 продвинутый (Java 17+) 🎯 Задача Реализуйте класс CloneableIterator<T>, который: ✔ Оборачивает любой Iterator<T> ✔ Позволяет создать независимые клоны, каждый из которых продолжает чтение с текущего места ✔ Поддерживает *эффективное* разделение буфера: память O(k), где k — число активных клонов ✔ Не дублирует данные, не загружает всё в память и работает потокобезопасно (не обязательно synchronized, но без багов) 📌 Пример CloneableIterator<Integer> base = new CloneableIterator<>(List.of(10, 20, 30, 40).iterator()); Iterator<Integer> it1 = base.clone(); Iterator<Integer> it2 = base.clone(); System.out.println(it1.next()); // 10 System.out.println(it1.next()); // 20 System.out.println(it2.next()); // 10 System.out.println(it2.next()); // 20 System.out.println(it2.next()); // 30 💡 Ограничения • Нельзя просто скопировать Iterator или заранее собирать весь список • Память должна освобождаться, если час