For the record,

https://stackoverflow.com/questions/28210775/split-list-into-multiple-lists-with-fixed-number-of-elements-in-java-8/28211518

is a better answer than the one I first linked.

---
A. Soroka
The University of Virginia Library

> On Sep 16, 2015, at 12:02 PM, Andy Seaborne <a...@apache.org> wrote:
> 
> Yes - A ResultSet isn't Iterable because you can only read it once unless you 
> do something like ResultSetFactory.makeRewindable,
> Hence converting to a stream (.sequential() if ordered!)) is nice.
> 
> If you are throwing away the part of the results outside the 
> startOffset/rowsCount slice, you can add OFFSET & LIMIT to the query then the 
> query engine/server can do it, resulting in less bytes.
> 
> If you want the client to control it, the streams way is good.
> 
>       Andy
> 
> On 16/09/15 16:27, aj...@virginia.edu wrote:
>> One option: Jena is now using Java 8, so you can use the Streams API to do 
>> this:
>> 
>> https://stackoverflow.com/questions/29273705/how-to-paginate-a-list-of-objects-in-java-8
>> 
>> ResultSet is an Iterator, so you can convert it to a Stream.
>> 
>> ---
>> A. Soroka
>> The University of Virginia Library
>> 
>>> On Sep 16, 2015, at 11:19 AM, Zen 98052 <z98...@outlook.com> wrote:
>>> 
>>> Any idea on how to do the paging on the results set?
>>> 
>>> For example in this code:
>>> 
>>> 
>>> ResultSet rs = qe.execSelect();
>>> 
>>> 
>>> I was thinking to use com.google.common.collect.FluentIterable, so let say 
>>> I have the start offset and rows count values.
>>> 
>>> To do the paging logic in naive way would be something like:
>>> 
>>> 
>>> FluentIterable<QuerySolution> newIterator = FluentIterable.from(rs);
>>> 
>>> newIterator.skip(startOffset);
>>> 
>>> newIterator.limit(rowsCount);
>>> 
>>> 
>>> Unfortunately the first line doesn't work (the ResultSet type is not type 
>>> of Iterable as expected by FluentIterable).
>>> 
>>> Let me know the right way of paging the query results.
>>> 
>>> 
>>> 
>>> Thanks,
>>> 
>>> Z
>> 
> 

Reply via email to