[
https://issues.apache.org/jira/browse/COLLECTIONS-442?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13649668#comment-13649668
]
Andy Seaborne edited comment on COLLECTIONS-442 at 5/6/13 11:42 AM:
--------------------------------------------------------------------
I like the style. Attached is another take on this.
The main class is {{Iter}} that provides two styles:
* A style like the FluentIterator style of method chaining.
* Static methods to provide short sequences to that one-step operations can be
applied to regular iterators and iterables
Also includes a "PeekIterator" for looking one step ahead.
The function-application style is useful for short sequences; the chainign is
better for longer sequences.
{noformat}
iter = Iter.removeNulls(iter) ;
{noformat}
Example of each style: (example.IterExample.java):
{noformat}
List<Integer> x = Arrays.asList(1,2,3,2,3) ;
// Chaining style
Iter<String> iter = Iter.iter(x)
.filter(new Filter<Integer>() {
@Override public boolean accept(Integer item)
{ return item.intValue() >= 2 ; }})
.distinct()
.append(x.iterator())
.map(new Transform<Integer,String>() {
@Override public String convert(Integer item)
{ return "["+String.valueOf(item)+"]" ; }}) ;
System.out.println(iter.toList());
{noformat}
and
{noformat}
List<Integer> x = Arrays.asList(1,2,3,2,3) ;
// Function application style.
Iterator<Integer> it = Iter.filter(x, new Filter<Integer>() {
@Override public boolean accept(Integer item)
{ return item.intValue() >= 2 ; }}) ;
it = Iter.distinct(it) ;
it = Iter.concat(it, x.iterator()) ;
Iterator<String> its = Iter.map(it, new Transform<Integer,String>() {
@Override public String convert(Integer item)
{ return "["+String.valueOf(item)+"]" ; }}) ;
List<String> y = Iter.toList(its) ;
System.out.println(y);
}
}
{noformat}
was (Author: andy.seaborne):
I like the style. Attached is another take on this.
The main class is {{Iter}} that provides two styles:
* A style like the FluentIterator style of method chaining.
* Static methods to provide short sequences to that one-step operations can be
applied to regular iterators and iterables
Also includes a "PeekIterator" for looking one step ahead.
The function-application style is useful for short sequences; the chainign is
better for longer sequences.
{noformat}
iter = Iter.removeNulls(iter) ;
{noformat}
Example of each style: (example.IterExample.java):
{noformat}
List<Integer> x = Arrays.asList(1,2,3,2,3) ;
// Chaining style
Iter<String> iter = Iter.iter(x)
.filter(new Filter<Integer>() {
@Override
public boolean accept(Integer item)
{
return item.intValue() >= 2 ;
}})
.distinct()
.append(x.iterator())
.map(new Transform<Integer,String>() {
@Override
public String convert(Integer item)
{
return "["+String.valueOf(item)+"]" ;
}}) ;
System.out.println(iter.toList());
{noformat}
and
{noformat}
List<Integer> x = Arrays.asList(1,2,3,2,3) ;
// Function application style.
Iterator<Integer> it = Iter.filter(x, new Filter<Integer>() {
@Override
public boolean accept(Integer item)
{
return item.intValue() >= 2 ;
}}) ;
it = Iter.distinct(it) ;
Iterator<String> its = Iter.map(it, new Transform<Integer,String>() {
@Override
public String convert(Integer item)
{
return "["+String.valueOf(item)+"]" ;
}}) ;
List<String> y = Iter.toList(its) ;
System.out.println(y);
}
}
{noformat}
> A set of enhanced iterator classes donated by the Apache Jena project
> ---------------------------------------------------------------------
>
> Key: COLLECTIONS-442
> URL: https://issues.apache.org/jira/browse/COLLECTIONS-442
> Project: Commons Collections
> Issue Type: Improvement
> Components: Iterator
> Reporter: Claude Warren
> Fix For: 4.0
>
> Attachments: COLLECTIONS-442.tar.gz, FluentIterator.java, iter-src.zip
>
>
> A set of templated (Generic) iterators that add filtering, mapping, and
> conversion to set or list collections. Tests included.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira