From: Fencer on
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
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
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
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
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