Re: looping through a list, starting at 1
On 8/1/2011 6:45 PM, Stefan Ram wrote:
Assuming a list has a sufficient number of entries at run
time, what should be prefered to assign a reference to each
entry to ?e?, starting at index 1:
for( final E e : l.sublist( 1, l.size() ))...
or
for( int i = 1; i< l.size(); ++i ){ final E e = l.get( 0 ); ... }
(ITYM l.get(i)?)
How about
Iterator<E> it = l.iterator();
it.next(); // ignore element 0
while (it.hasNext()) {
E e = it.next();
...
}
In short, there may well be half-a-dozen ways to do what you ask,
if not more. None of them stands out as "preferred" to my eye;
you may as well do whatever seems natural.
... and "natural" is a little unnatural, it seems to me. If
the various E are truly independent -- if l is merely a Collection
for the purposes of the loop -- one wonders where the interloper at
position 0 came from. And if the position really matters -- maybe
you're looking at adjacent pairs or something -- then clearly i has
more significance than a purely synthetic iteration control would
(hence your second form would be preferred, because somewhere in the
body you'd be doing l.get(i-1).) As a problem in the abstract I see
no clear reason to choose one form over its peers; with a concrete
context I might.
--
Eric Sosman
esosman@ieee-dot-org.invalid