🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.vbasic
Article #92231

Wydajne usuwanie z ArrayList (długie)

#92231
From: Piotr Lipski
Date: Thu, 20 Oct 2005 06:13
33 lines
2176 bytes
Witam.

W klasie formularza menu głównego mam zadeklarowaną taką zmienną:

Dim arrTaskRuns As New ArrayList

W trakcie pracy aplikacji mam potrzebę usuwania z tej zmiennej obiektów,
które mają jakąś określoną właściwość. Np. wartość pola .GetStatus jest
jakaś-tam lub jakaś-tam-inna.

Pierwszy pomysł był taki, żeby to "przelecieć" For Each ... Next i
pousuwać, ale okazało się, że po usunięciu któregokolwiek obiektu
generowany jest błąd przy Next (że nie można iterować bo zmieniła się
kolekcja).

Drugi pomysł był taki, żeby robić For-Next w pętli Do-Loop i wyskakiwać z
For-Next za każdym razem jak się usunie obiekt, a z pętli Do-Loop jeżeli
nie było ani jednego usunięcia. I to działało, ale przy dużych ilościach
obiektów bardzo powoli (i nie dziwota).

Obecnie działa tak, że obiekty, które mają pozostać, są w pętli For-Next
przepisywane do lokalnej zmiennej (klasy ArrayList), a na koniec czyszczę
arrTaskRuns i podstawiam do niej tą zmienną lokalną. Działa całkiem szybko,
ale wymaga (w najgorszym razie) dwa razy więcej pamięci.

Wpadłem więc na pomysł żeby zajrzeć do helpa - owszem, są różne przykłady,
ale nic o usuwaniu w pętli :)

Kolejny pomysł - zajrzę na Google, a w międzyczasie zapytam na grupie
vbasic, może mi ktoś coś zasugeruje...

-- 
PL
Technical Details
Message-ID: <dj7cg8$s8a$1@news.onet.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!not-for-mail

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!not-for-mail
From: Piotr Lipski <piotr.lipski@nie.p0czta.spamuj.b0.onet.w.ryj.pl>
Newsgroups: pl.comp.lang.vbasic
Subject: Wydajne usuwanie z ArrayList (długie)
Date: Thu, 20 Oct 2005 08:13:59 +0200
Organization: Onet.pl
Lines: 33
Sender: Piotr Lipski <>
Message-ID: <dj7cg8$s8a$1@news.onet.pl>
NNTP-Posting-Host: farmfrites.ext.ids.pl
Mime-Version: 1.0
X-Trace: news.onet.pl 1129788744 28938 213.77.126.170 (20 Oct 2005 06:12:24 GMT)
X-Complaints-To: usenet@news.onet.pl
NNTP-Posting-Date: Thu, 20 Oct 2005 06:12:24 +0000 (UTC)
X-Sender: k8V2QDKeTIFe2ZofQR+7UwJQvFq7Hofm8IvhXReqMQ4=
User-Agent: 40tude_Dialog/2.0.15.1pl
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit