[Newbies] Iterating and removing items from OrderedCollections

Marcin Tustin mm3 at zepler.net
Thu Sep 18 09:00:15 UTC 2008


Would this be O(n^2) to remove all nils?

In any case, if this is a conveyor belt, then you should almost certainly be
using a linke data structure, and iterate over the structure to delete the
unwanted links.

On 9/18/08, Bert Freudenberg <bert at freudenbergs.de> wrote:
>
>
> Am 18.09.2008 um 10:06 schrieb Ian J Cottee:
>
> Hello all
>>
>> I've got an OrderedCollection that is normally a fixed size (let's say
>> 10 elements). Each element in the collection is another an object or
>> nil. So for example, at a point in time it might look like
>>
>>  [nil, nil, Object, nil, Object, Object, nil, nil, Object, nil]
>>
>> What I want is to be able to resize the collection. Making it bigger
>> is no problem for me, I can just add nils to the end of the
>> collection. Making it smaller is involving a little bit of pain. I can
>> see ways of doing it but theyr'e not elegant and I'm sure there are
>> cleaner ways of doing it. If I made the above queue smaller I'd
>> basically remove the nils starting from the beginning. So a resize to
>> size 7 would give me
>>
>> [ Object, Object, Object, nil, nil, Object, nil]
>>
>> i.e. the first three nils have been removed.
>>
>> Does anybody have any comments on appropriate code to handle this? If
>> not, I'll go with the ugly stuff but it would be nice to know the
>> correct SmallTalk way.
>>
>> Many thanks for any suggestions.
>>
>
>
> I guess it doesn't get much more elegant and efficient than
>
>        start := coll findFirst: [:each | each ~~ nil].
>        coll removeFirst: start-1.
>
> ... unless you add a specific method to OC.
>
> - Bert -
>
>
> _______________________________________________
> Beginners mailing list
> Beginners at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/mailman/listinfo/beginners
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/beginners/attachments/20080918/ffaea329/attachment-0001.htm


More information about the Beginners mailing list