From: Fencer on 1 Dec 2009 05:47 Say I have a List<SomeClass> and now I want to loop through the list but I am only interested in the String representation of the SomeClass objects. Do I have to do it like this: for (SomeClass inst : aListOfSomeClass) { String str = inst.toString(); // Do something with str } ? I don't really care about each instance objecct here, just the string represenation of each instance, so is it possible to do something like the following non-valid code (and here I imagine toString() being called on each element): for (String str : aListOfSomeClass.toString()) { // Do something with str } Hope I made sense, thanks! - Fencer
From: Eric Sosman on 1 Dec 2009 08:09 Fencer wrote: > Say I have a List<SomeClass> and now I want to loop through the list but > I am only interested in the String representation of the SomeClass objects. > > Do I have to do it like this: > > for (SomeClass inst : aListOfSomeClass) { > String str = inst.toString(); > // Do something with str > } > > ? Yes. (Well, "No" if SomeClass *is* String, but ...) The same would hold if you wanted something else derived from the objects in the List, as opposed to the objects themselves. The `for' will deliver the objects; you've got to perform the desired derivation -- toString, hashCode, getName, whatever -- on each object as you get it. > I don't really care about each instance objecct here, just the string > represenation of each instance, so is it possible to do something like > the following non-valid code (and here I imagine toString() being called > on each element): > > for (String str : aListOfSomeClass.toString()) { > // Do something with str > } No. There's no "mapcar" operation in Java. -- Eric Sosman esosman(a)ieee-dot-org.invalid
From: Kevin McMurtrie on 1 Dec 2009 11:44 In article <7nkah7F3luvvkU1(a)mid.individual.net>, Fencer <no.i.dont(a)want.mail.from.spammers.com> wrote: > Say I have a List<SomeClass> and now I want to loop through the list but > I am only interested in the String representation of the SomeClass objects. > > Do I have to do it like this: > > for (SomeClass inst : aListOfSomeClass) { > String str = inst.toString(); > // Do something with str > } > > ? > > I don't really care about each instance objecct here, just the string > represenation of each instance, so is it possible to do something like > the following non-valid code (and here I imagine toString() being called > on each element): > > for (String str : aListOfSomeClass.toString()) { > // Do something with str > } > > Hope I made sense, thanks! > > - Fencer Java always has a hard way :) public class StringItr implements Iterable<String> { final Iterable m_target; public StringItr (Iterable i) { m_target= i; } public Iterator<String> iterator() { return new Iterator<String> () { final Iterator i= m_target.iterator(); public boolean hasNext() { return i.hasNext(); } public String next() { return String.valueOf(i.next()); } public void remove() { i.remove(); } }; } } .... for (String s : new StringItr(aListOfSomeClass)) .... -- I won't see Goolge Groups replies because I must filter them as spam
From: Daniel Pitts on 1 Dec 2009 15:43 Kevin McMurtrie wrote: > In article <7nkah7F3luvvkU1(a)mid.individual.net>, > Fencer <no.i.dont(a)want.mail.from.spammers.com> wrote: > >> Say I have a List<SomeClass> and now I want to loop through the list but >> I am only interested in the String representation of the SomeClass objects. >> >> Do I have to do it like this: >> >> for (SomeClass inst : aListOfSomeClass) { >> String str = inst.toString(); >> // Do something with str >> } >> >> ? >> >> I don't really care about each instance objecct here, just the string >> represenation of each instance, so is it possible to do something like >> the following non-valid code (and here I imagine toString() being called >> on each element): >> >> for (String str : aListOfSomeClass.toString()) { >> // Do something with str >> } >> >> Hope I made sense, thanks! >> >> - Fencer > > Java always has a hard way :) > > > public class StringItr implements Iterable<String> > { > final Iterable m_target; This should be an Iterable<?> > public StringItr (Iterable i) Same for this Iterable > { > m_target= i; > } > public Iterator<String> iterator() > { > return new Iterator<String> () > { > final Iterator i= m_target.iterator(); make this an Iterator<?> > public boolean hasNext() > { > return i.hasNext(); > } > > public String next() > { > return String.valueOf(i.next()); > } > > public void remove() > { > i.remove(); > } > }; > } > } -- Daniel Pitts' Tech Blog: <http://virtualinfinity.net/wordpress/>
From: Kevin McMurtrie on 1 Dec 2009 23:37
In article <vdfRm.35142$cd7.18472(a)newsfe04.iad>, Daniel Pitts <newsgroup.spamfilter(a)virtualinfinity.net> wrote: > Kevin McMurtrie wrote: > > In article <7nkah7F3luvvkU1(a)mid.individual.net>, > > Fencer <no.i.dont(a)want.mail.from.spammers.com> wrote: > > > >> Say I have a List<SomeClass> and now I want to loop through the list but > >> I am only interested in the String representation of the SomeClass objects. > >> > >> Do I have to do it like this: > >> > >> for (SomeClass inst : aListOfSomeClass) { > >> String str = inst.toString(); > >> // Do something with str > >> } > >> > >> ? > >> > >> I don't really care about each instance objecct here, just the string > >> represenation of each instance, so is it possible to do something like > >> the following non-valid code (and here I imagine toString() being called > >> on each element): > >> > >> for (String str : aListOfSomeClass.toString()) { > >> // Do something with str > >> } > >> > >> Hope I made sense, thanks! > >> > >> - Fencer > > > > Java always has a hard way :) > > > > > > public class StringItr implements Iterable<String> > > { > > final Iterable m_target; > This should be an Iterable<?> It should have array support, JavaDocs, and proper spacing too but it's just free info on Usenet. I leave it to the viewer to add the finishing touches. > [snip] -- I won't see Goolge Groups replies because I must filter them as spam |