Dobry dzień. Pytanie brzmi jak usunąć elementy z kolekcji
Map . Próbuję rozwiązać kolejny problem i nie mogę ruszyć dalej, bo nie rozumiem na jakiej zasadzie następuje usunięcie ze zbioru. Pomysł jest taki, aby usunąć identyczne elementy z kolekcji, porównanie odbywa się według wartości. Z wykładów na poziomie 8 zrozumiałem, że „iterator” to coś w rodzaju linku do naszej kolekcji. Dlatego stworzyłem 2 takie linki i porównując elementy w kolekcji zdecydowałem się usunąć elementy, do których odnosi się to łącze (obiekt) iterator2. Wyjaśnij, dlaczego robię to źle. Naprawdę chcę zrozumieć, gdzie się mylę. Dziękuję wszystkim, którzy odpowiedzą. Inna opcja wdrożenia usuwania z kolekcji
for (Iterator
> iterator1 = map.entrySet().iterator(); iterator1.hasNext();){ HashMap.Entry
pair1 = iterator1.next(); for (Iterator
> iterator2 = map.entrySet().iterator(); iterator2.hasNext();) { HashMap.Entry
pair2 = iterator2.next(); if(pair1.getValue().equals(pair2.getValue())){ map.remove(pair2.getKey()); } } }
Iterator
> iterator1 = map.entrySet().iterator(); while(iterator1.hasNext()){ Map.Entry
pair1 = iterator1.next(); Iterator
> iterator2 = map.entrySet().iterator(); while(iterator2.hasNext()){ Map.Entry
pair2 = iterator2.next(); if (pair1.getValue().equals(pair2.getValue())){ iterator2.remove(); } } }
GO TO FULL VERSION