Mam klasę, która używa HashSet
i chcę klasy implementacji Iterable
, nie chcę jednak, aby iterator klasy obsługiwał metodę remove()
.Java - HashSet najlepszy sposób na implementację iteratora, który nie obsługuje remove()
Domyślny iterator HashSet
to HashSet.KeyIterator
, który jest prywatną klasą w klasie HashSet
, więc nie mogę go po prostu rozszerzyć i nadpisać metody remove.
Idealnie chciałbym uniknąć pisania klasy opakowania dla KeyIterator
, ale nie mam pojęcia, jak inaczej mógłbym łatwo i po prostu wdrożyć mój własny iterator w jakikolwiek inny sposób.
Wszelkie pomysły?
Cheers,
Pete
Czy Twój HashSet muszą być modyfikowalne? –
@Kevin Tak, ale musi również zachować spójną liczbę elementów, którymi zarządza wewnętrzna logika klasy, ale nie jest czymś, co chciałbym zostawić, aby zaufać, jeśli HashSet zostanie zmodyfikowany za pomocą iteratora. – Peter
Co jest złego w opakowaniu? – whiskeysierra