[jira] [Commented] (COLLECTIONS-393) Split / Partition a collection into smaller collections

2012-08-16 Thread Thomas Neidhart (JIRA)

[ 
https://issues.apache.org/jira/browse/COLLECTIONS-393?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13436272#comment-13436272
 ] 

Thomas Neidhart commented on COLLECTIONS-393:
-

The code seems to have been adapted from google guava, which is fair enough as 
it is under Apache license itself.

Similar to guava, I would embed the functionality in ListUtils and hide actual 
Partition implementation.

> Split / Partition a collection into smaller collections
> ---
>
> Key: COLLECTIONS-393
> URL: https://issues.apache.org/jira/browse/COLLECTIONS-393
> Project: Commons Collections
>  Issue Type: New Feature
>  Components: Collection
>Reporter: Chris Shayan
> Fix For: 4.0
>
> Attachments: Partition.java, TestPartition.java
>
>   Original Estimate: 24h
>  Remaining Estimate: 24h
>
> Returns consecutive sublists of a list, each of the same size (the final list 
> may be smaller). For example, partitioning a list containing [a, b, c, d, e] 
> with a partition size of 3 yields [[a, b, c], [d, e]] -- an outer list 
> containing two inner lists of three and two elements, all in the original 
> order. 
> The outer list is unmodifiable, but reflects the latest state of the source 
> list. The inner lists are sublist views of the original list, produced on 
> demand using List.subList(int, int), and are subject to all the usual caveats 
> about modification as explained in that API. Adapted from 
> http://code.google.com/p/google-collections/
> Inspired by Lars Vogel

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (COLLECTIONS-393) Split / Partition a collection into smaller collections

2012-02-28 Thread Chris Shayan (Commented) (JIRA)

[ 
https://issues.apache.org/jira/browse/COLLECTIONS-393?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13218894#comment-13218894
 ] 

Chris Shayan commented on COLLECTIONS-393:
--

the class is like this:

package dk.sebpension;

import java.util.AbstractList;
import java.util.List;

/**
 * Split / Partition a collection into smaller collections Inspired by Lars
 * Vogel
 */
public final class Partition extends AbstractList> {
final List list;
final int size;

public Partition(List list, int size) {
this.list = list;
this.size = size;
}

@Override
public List get(int index) {
int listSize = size();
if (listSize < 0) {
throw new IllegalArgumentException("negative size: " + 
listSize);   
}
if (index < 0) {
throw new IndexOutOfBoundsException("index " + index
+ " must not be negative"); 

}
if (index >= listSize) {
throw new IndexOutOfBoundsException("index " + index
+ " must be less than size " + 
listSize);   
}   
int start = index * size;
int end = Math.min(start + size, list.size());
return list.subList(start, end);
}

@Override
public int size() {
return (list.size() + size - 1) / size;
}

@Override
public boolean isEmpty() {
return list.isEmpty();
}

/**
 * Returns consecutive {@linkplain List#subList(int, int) sublists} of a
 * list, each of the same size (the final list may be smaller). For 
example,
 * partitioning a list containing {@code [a, b, c, d, e]} with a 
partition
 * size of 3 yields {@code [[a, b, c], [d, e]]} -- an outer list 
containing
 * two inner lists of three and two elements, all in the original order.
 * 
 * 
 * The outer list is unmodifiable, but reflects the latest state of the
 * source list. The inner lists are sublist views of the original list,
 * produced on demand using {@link List#subList(int, int)}, and are 
subject
 * to all the usual caveats about modification as explained in that API.
 * 
 * Adapted from http://code.google.com/p/google-collections/ * @param 

 * 
 * @param list
 *the list to return consecutive sublists of
 * @param size
 *the desired size of each sublist (the last may be smaller)
 * @return a list of consecutive sublists
 */
public static  List> partition(List list, int size) {
if (list == null) {
throw new NullPointerException("'list' must not be 
null");  
}
if (!(size > 0)) {
throw new IllegalArgumentException("'size' must be 
greater than 0");
}

return new Partition(list, size);
}
}

and example of it is:

List> strings = Partition.partition(raws, 
5);
for (List list : strings) {
// 
}


> Split / Partition a collection into smaller collections
> ---
>
> Key: COLLECTIONS-393
> URL: https://issues.apache.org/jira/browse/COLLECTIONS-393
> Project: Commons Collections
>  Issue Type: New Feature
>  Components: Collection
>Reporter: Chris Shayan
> Attachments: Partition.java
>
>   Original Estimate: 24h
>  Remaining Estimate: 24h
>
> Returns consecutive sublists of a list, each of the same size (the final list 
> may be smaller). For example, partitioning a list containing [a, b, c, d, e] 
> with a partition size of 3 yields [[a, b, c], [d, e]] -- an outer list 
> containing two inner lists of three and two elements, all in the original 
> order. 
> The outer list is unmodifiable, but reflects the latest state of the source 
> list. The inner lists are sublist views of the original list, produced on 
> demand using List.subList(int, int), and are subject to all the usual caveats 
> about modification as explained in that API. Adapted from 
> http://code.google.com/p/google-collections/
> Inspired by Lars Vogel

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!