Aktywne Wpisy
lepaq +417
GeDox +564
Od dziś, co dzień będę wrzucał tego posta. Dopóki nie zostanie przewieziony do polskiego aresztu.
Sebastian Majtczak urodzony 31.05.1991 w Bonn, zamieszkały w Łodzi, prowadzący spółkę Rigello Sp. z o.o. jest poszukiwany czerwoną notą Interpolu.
#majtczak #sebastianmajtczak #codziennymajtczak
Sebastian Majtczak urodzony 31.05.1991 w Bonn, zamieszkały w Łodzi, prowadzący spółkę Rigello Sp. z o.o. jest poszukiwany czerwoną notą Interpolu.
#majtczak #sebastianmajtczak #codziennymajtczak
Mam pierwszy raz w życiu ten problem.
Przechowuję dwuwymiarową ArrayListę pewnych obiektów, powiedzmy że wygląda to tak:
ArrayList> I w zasadzie wszystko ok poza tym, że kiedy chcę iterować po obiektach i coś tam na nich robić dostaję ConcurrentModificationException. Cała aplikacja działa w Swingu. Wiem że powinienem synchronizować kolekcję, ale nie bardzo wiem w jaki sposób zrobić to poprawnie.
Kiedy zrobiłem blok synchronizowany:
synchronized(collection) {
...
}
No to dalej dostaję exceptiona. Kiedy zrobię całą metodę jako synchronized to też to samo się dzieje.
Ktoś/coś podpowie jak to ruszyć?
Ewentualnie może zmiana kolekcji na synchronizowaną normalnie z zachowaniem funkcjonalności dodawania/odejmowania ArrayList tak jak tutaj to mam?
#java #programowanie #swing
Kod byś pokazał. Tylko zobacz na sscce.org wcześniej.
Iterator iterator = lista.iterator();
while (iterator.hasNext())
{
final Cos cosTam = iterator.next();
// jakas tam logika
iterator.remove();
I nie definiuj ArrayList>, tylko List>.
@NorthPL93: O, dzięki. Zaraz sprawdzę.
Każda z klas które dziedziczą po 'Creature' (tzn. no jest tam jakieś dziedziczenie pomiędzy tą i ostatnimi, ale chodzi mi o o ostatnie dziedziczenie) mają jakiś tam priorytet działania i żeby wygodnie mi się iterowało po tym to tworzę listę, która przechowuje listy obiektów o konkretnych priorytetach. Np.
kolekcja.get(0) zwróci listę obiektów o najwyższym priorytecie.
kolekcja.get(1) zwraca mi listę obiektów o drugim najwyższym priorytecie. Itd.
Nie mogę tego pomieszać
@Wyrewolwerowanyrewolwer: No to znaczy, że masz Pan źle zaprojektowany kod.
Przykładowo
" abc ".trim()
nie zmienia swojego stanu po metodzie trim(), prawda?Chcesz powiedzieć że po wykonaniu akcji na obiekcie (np.: zmiana położenia na mapie) miałbym zwracać jego kopię z nowym stanem? Byłoby to dla mnie dość problematyczne przy ustalaniu kolejności ruchu.
@Wyrewolwerowanyrewolwer: Już to gdzieś z kimś przerabiałem na wypoku. Pozycja jakiegoś obiektu na torze czy coś... ;-)
W skrócie: obiekt nie ma położenia. Znaczy obiekt gdzieś jest, ale nie jest go świadom. (Tak samo jak stówka w portfelu nie wie, że jest w portfelu, a nie w skarbonce. "Wie", że ma Mieszka I na sobie.)
1. Układ odniesienia: mapa. Mapa się
@alosha: po mojemu to zależy co tworzy, (np gierkę) bo jak chcesz potem szybko i wydajnie zdobywać te lokacje, jeśli nie są one dostępne bezpośrednio z obiektu entity z wydajność poleci na pysk, kiedy takich sprawdzen masz 5000 Na tick, a tickow 100/sec.
W systemach gdzie potrzebna jest wydajnosc, nie można przesadzać z takim podejściem