commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Matthew Pocock <turingatemyhams...@gmail.com>
Subject Re: [collections] Iterate over sublists of an original list
Date Thu, 18 Aug 2011 13:54:16 GMT
The scala collections library has the grouped() method. From the scaladoc:

defgrouped (size: Int <http://www.scala-lang.org/api/current/scala/Int.html>
): Iterator<http://www.scala-lang.org/api/current/scala/collection/Iterator.html>
[List<http://www.scala-lang.org/api/current/scala/collection/immutable/List.html>
[A]]

Partitions elements in fixed size lists.
size

the number of elements per group
returns

An iterator producing lists of size size, except the last will be truncated
if the elements don't divide evenly.

I'm not suggesting you should jump to scala to use its collections library,
or even use scala-library.jar from your Java app, but I do find this method
together with groupBy() one of the more useful bits of functionality. Pity
something like it isn't supported by other 3rd party collections for Java.

Matthew

On 18 August 2011 13:48, Sébastien Lorber <lorber.sebastien@gmail.com>wrote:

> Hello
>
> Actually if you look at my implementation, i use that List.sublist()
> method.
>
> It's a little pain to use it to split because you must always take care of
> an out of bound...
> IMHO, people do not really like to play with array/list indexes... If they
> just want to split a big list of a couple of small sublists,
> they probably do not like to have to deal with calculating the good index
> positions, they just want the list to be splitted :)
>
> I've looked at some guava classes but wasn't able to find anything to do
> this: a convenient way to split a list
>
>
>
> 2011/8/18 David Karlsen <davidkarlsen@gmail.com>
>
> > Guava also has a lot of handy classes for working on collections.
> >
> > 2011/8/18 Simone Tripodi <simonetripodi@apache.org>
> >
> > > Salut Sébastien,
> > > wouldn't the List#subList(int, int)[1] method be helpful for your
> > purposes?
> > > HTH,
> > > Simo
> > >
> > > [1]
> > >
> >
> http://download.oracle.com/javase/1.5.0/docs/api/java/util/List.html#subList(int
> > > ,
> > > int)
> > >
> > >
> > > http://people.apache.org/~simonetripodi/
> > > http://www.99soft.org/
> > >
> > >
> > >
> > > On Thu, Aug 18, 2011 at 2:26 PM, Sébastien Lorber
> > > <lorber.sebastien@gmail.com> wrote:
> > > > Hello,
> > > >
> > > >
> > > > It's not the first time i have to split a big list of hibernate
> > entities
> > > > ID's to sublists of 100 items for exemple so that i could load all
> > these
> > > > entities 100 in a single request (with a "where id in (<id sublist>")
> > > >
> > > > Thus I want to iterate easily on sublists of a list, with the
> > possibility
> > > to
> > > > give the sublist a size...
> > > > I though i would find the tool in apache collections but i didn't
> find
> > > it.
> > > > Perhaps i've missed the class...
> > > >
> > > >
> > > >
> > > > If there's no tool to do that yet, i think it would be great to make
> > one
> > > in
> > > > apache collections.
> > > >
> > > > The kinda simple implementation i use at work is the following:
> > > > http://pastebin.com/CRitkWTG
> > > >
> > > >
> > > > And you use it like that:
> > > >
> > > >        // We load vehicles 100 by 100
> > > >         for ( List<String> idSublist : new
> > > > SublistIterable<String>(allIds,100) ) {
> > > >            List<Vehicle> vehiclesSublist =
> > > vehicleDAO.findByIds(idSublist);
> > > >            // blablabla
> > > >        }
> > > >
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
> > > For additional commands, e-mail: dev-help@commons.apache.org
> > >
> > >
> >
> >
> > --
> > --
> > David J. M. Karlsen - http://www.linkedin.com/in/davidkarlsen
> >
>



-- 
Dr Matthew Pocock
Visitor, School of Computing Science, Newcastle University
mailto: turingatemyhamster@gmail.com
gchat: turingatemyhamster@gmail.com
msn: matthew_pocock@yahoo.co.uk
irc.freenode.net: drdozer
tel: (0191) 2566550
mob: +447535664143

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message