Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #9526
| From | bob <bob@coolgroups.com> |
|---|---|
| Newsgroups | comp.lang.java.programmer |
| Subject | Re: iteration blues |
| Date | 2011-11-04 13:42 -0700 |
| Organization | http://groups.google.com |
| Message-ID | <1d1f6dca-fa6a-4ced-8caa-b2d44c4a141b@q13g2000vbd.googlegroups.com> (permalink) |
| References | <a84ab4cf-a960-4783-a955-0718438dab63@bq8g2000vbb.googlegroups.com> <9hhpttFi6sU1@mid.individual.net> |
On Nov 4, 2:34 am, Robert Klemme <shortcut...@googlemail.com> wrote:
> On 11/03/2011 04:37 PM, bob wrote:
>
>
>
>
>
>
>
>
>
> > So, I wrote this code for some particle effects:
>
> > package com.coolfone.particles;
>
> > import java.util.Iterator;
> > import java.util.Vector;
>
> > import javax.microedition.khronos.opengles.GL10;
>
> > public class FireManager {
> > static Vector<Particle> particles = new Vector<Particle>();
>
> > public static void startfire(float x, float y) {
> > for (int ctr = 0; ctr< 100; ctr++) {
> > Particle p = new Particle();
> > p.x = (float) (x + Math.random()-.5);
> > p.y = (float) (y + Math.random()-.5);
> > p.dx = (float) (Math.random()-.5)/4f;
> > p.dy = (float) (Math.random()-.5)/4f;
> > p.timeleft = (int) (Math.random() * 50 + 50);
> > particles.add(p);
> > }
> > }
>
> > public static void burnfire() {
> > Iterator<Particle> i = particles.iterator();
> > Vector<Particle> removelist = new Vector<Particle>();
> > while (i.hasNext()) {
> > Particle p = i.next();
> > p.move();
> > p.timeleft--;
> > if (p.timeleft == 0) removelist.add(p);
>
> > }
> > particles.removeAll(removelist);
>
> > }
>
> > public static void drawfire(GL10 gl) {
> > Iterator<Particle> i = particles.iterator();
> > while (i.hasNext()) {
> > Particle p = i.next();
> > p.draw(gl);
> > }
> > }
>
> > }
>
> > I'm concerned about inefficiency in the burnfire function. Does
> > anyone know how to rewrite this quickly if particles was a linked
> > list? The main issue is that I'm not sure if removing items during
> > iteration messes up the iterator.
>
> I'm surprised nobody seems to mention Iterator.remove().
>
> public static void burnfire() {
> for (final Iterator<Particle> i = particles.iterator(); i.hasNext();) {
> final Particle p = i.next();
> p.move();
> p.timeleft--; // Direct access to member, bad!
>
> if (p.timeleft == 0) {
> iter.remove();
> }
> }
>
> }
>
> This can be used regardless of container type. Efficiency depends on
> the ratio of removed elements. If you remove much and do not need
> indexed access (i.e. via List.get(int)) you can use a LinkedList.
> Otherwise use ArrayList as indicated already. There is no point in
> using Vector these days any more.
>
> And btw, do not be concerned about performance, measure it. Results may
> be surprising.
>
> Kind regards
>
> robert
Just what I needed. Thanks.
Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Find similar
iteration blues bob <bob@coolgroups.com> - 2011-11-03 08:37 -0700
Re: iteration blues Knute Johnson <nospam@knutejohnson.com> - 2011-11-03 08:51 -0700
Re: iteration blues Lew <lewbloch@gmail.com> - 2011-11-03 09:32 -0700
Re: iteration blues Arne Vajhøj <arne@vajhoej.dk> - 2011-11-04 21:00 -0400
Re: iteration blues spk <jhic@speak.invalid> - 2011-11-05 07:48 -0400
Re: iteration blues Henk van Voorthuijsen <voorth@xs4all.nl> - 2011-11-03 09:31 -0700
Re: iteration blues Lew <lewbloch@gmail.com> - 2011-11-03 13:50 -0700
Re: iteration blues Henk van Voorthuijsen <voorth@xs4all.nl> - 2011-11-04 08:07 -0700
Re: iteration blues Arne Vajhøj <arne@vajhoej.dk> - 2011-11-04 21:02 -0400
Re: iteration blues Roedy Green <see_website@mindprod.com.invalid> - 2011-11-03 10:08 -0700
Re: iteration blues Travers Naran <tnaran@gmail.com> - 2011-11-03 22:22 -0700
Re: iteration blues Robert Klemme <shortcutter@googlemail.com> - 2011-11-04 10:34 +0100
Re: iteration blues Lew <lewbloch@gmail.com> - 2011-11-04 10:46 -0700
Re: iteration blues Robert Klemme <shortcutter@googlemail.com> - 2011-11-04 23:55 +0100
Re: iteration blues Eric Sosman <esosman@ieee-dot-org.invalid> - 2011-11-04 21:06 -0400
Re: iteration blues Lew <lewbloch@gmail.com> - 2011-11-04 20:30 -0700
Re: iteration blues bob <bob@coolgroups.com> - 2011-11-05 12:40 -0700
Re: iteration blues Eric Sosman <esosman@ieee-dot-org.invalid> - 2011-11-05 16:14 -0400
Re: iteration blues Lew <lewbloch@gmail.com> - 2011-11-05 13:41 -0700
Re: iteration blues bob <bob@coolgroups.com> - 2011-11-04 13:42 -0700
csiph-web