Re: Newbie: iterating two collections
usgog@yahoo.com wrote:
I have two ArrayLists: List<Boolean> A and List<T> B with same size. I
want something like
for (int i =0; i < A.size(); i++) { B[i].booleanValue =
A[i].booleanValue); }. Just one to one value set. I am pretty new to
iterators. Can I use foreach in java for that? Any decent approach
instead of nested loops?
A few points:
Variables should start with a lower case letter.
Boolean is immutable. You cannot change the actual object, but you can
change references to a Boolean (so long as the references are not final).
It's a good idea to avoid non-private fields.
You need to specify that T is of some concrete type with the members
that your code requires. In this example you can use wildcards.
It's probably better to use the original list, rather than having two
copies of the same thing.
Instead of List<Boolean> you may find BitSet preferable, particularly as
it will be around 32 or 64 times as compact (depending on whether your
JVM is using 32 or 64 bit addresses).
If you start with 'A' as an empty List, you don't need to worry about an
iterator for it.
So, ignoring the BitSet and using a single List:
interface BooleanThing {
boolean isBooleanValue();
}
public static List<Boolean> extractBooleans(
Iterable<? extends BooleanThing> things
) {
List<Boolean> booleans = new ArrayList<Boolean>(objects.size());
for (BooleanThing thing : things) {
booleans.add(thing.isBooleanValue());
}
return booleans;
}
Obviously the names aren't very good as I don't know why you are doing this.
Tom Hawtin