Zmiana rozmiaru iteratora

0

Mam np. takie coś:

Set<Integer> hs = new LinkedHashSet<>();
        Iterator iterator = hs.iterator();
        int i = 0;
        hs.add(3);
        while(iterator.hasNext()) {
            Object element = iterator.next();
            hs.add(i);
            ++i;
            iterator = hs.iterator();
        }

Jak moge zrobic aby po zwiekszeniu sie tablicy Set zwiekszala sie liczba wykonan petli, za pomoca iteratora?

0
  1. Nie wiem co chcesz zrobić ale na pewno nie to o co pytasz. Napisz co potrzebujesz zrobić.
  2. Ten kod zawiera tyle WTF w sobie, ze mógłby w zasadzie być prezentowany na zajęciach z patologii Javy.
0
jarekr000000 napisał(a):
  1. Nie wiem co chcesz zrobić ale na pewno nie to o co pytasz. Napisz co potrzebujesz zrobić.
  2. Ten kod zawiera tyle WTF w sobie, ze mógłby w zasadzie być prezentowany na zajęciach z patologii Javy.

Co w nim takiego Wtf :D ?

Potrzebuję kolekcji która nie będzie przyjmować duplikatow, nie będzie posortowana i będzie użyta tak: dodaje pierwszy element następnie wykonuje pętle w której będzie dodane nastepne np 500 elementów i dla każdego nowego elementu coś tam będzie robione, aż przestaną być dodawane nowe elementy. Co powinienem użyć?

0
  1. No to LinkedHashSet wybrałeś OK.

  2. Skorzystaj z faktu, że metoda add() zwraca ci boolean

  3. Jak masz iterator, a potem coś dodajesz do kolekcji to ten iterator tego nie widzi w najlepszym razie, w najgorszym leci ConcurrentModificationException (zależy od kolekcji).

0
Pomidor napisał(a):
jarekr000000 napisał(a):
  1. Nie wiem co chcesz zrobić ale na pewno nie to o co pytasz. Napisz co potrzebujesz zrobić.
  2. Ten kod zawiera tyle WTF w sobie, ze mógłby w zasadzie być prezentowany na zajęciach z patologii Javy.

Co w nim takiego Wtf :D ?

Potrzebuję kolekcji która nie będzie przyjmować duplikatow, nie będzie posortowana i będzie użyta tak: dodaje pierwszy element następnie wykonuje pętle w której będzie dodane nastepne np 500 elementów i dla każdego nowego elementu coś tam będzie robione, aż przestaną być dodawane nowe elementy. Co powinienem użyć?

Zadaj sobie pytanie, jaki ma być warunek końca pętli. Jeśli z góry znamy liczbę iteracji, to zastosuj pętle for. Jeśli jakiś inny no to while lepiej ale to co robisz, to jak Jarek słusznie zauważył, jest WTF :D No bo iterujesz po kolekcji i wewnątrz niej chcesz ją zmieniać? :|

0

Zrobiłem to za pomocą kolejki, bo musi być tak, że ilość wykonań zwiększa się wraz z rozmiarem kolekcji, a nie od poczatku iterowane.

0

dodaje pierwszy element następnie wykonuje pętle w której będzie dodane nastepne np 500 elementów i dla każdego nowego elementu coś tam będzie robione, aż przestaną być dodawane nowe elementy

Czy tylko ja tego nie rozumiem? Nie bardzo rozumiem ani kodu (nigdy nie widziałem takiej konstrukcji, żeby ponownie przypisywać iterator w pętli, której warunkiem jest stan tego iteratora), ani nawet tego opisu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1