Range() In Java
Join the DZone community and get the full member experience.
Join For FreeA range is a very handy feature of programing languages like Python.
* range( 10 ) -> 0 1 2 3 4 5 6 7 8 9
* range( 5, 10 ) -> 5 6 7 8 9
* range( 0, 10, 3 ) -> 0 3 6 9
* range( '0', '9' ) -> 012345678
With an extended for loop it is possible to use such a feature too:
/*
* This project is made available under the terms of the BSD license, more information can be found at
* http://www.opensource.org/licenses/bsd-license.html
*
* Copyright (c) 2007. Christian Ullenboom (http://www.tutego.com/) and contributors. All rights reserved.
*/
package com.tutego;
import java.util.Iterator;
/**
* Class that generates immutable sequences (ranges) as Iterable
* objects. A range represents a start (0 if not given), an stop (mandatory) and
* an optional step (1 by default). The start value is included in the range,
* the stop value is exclusive. Every range is handled by an Iterable
* which can by used in an extended for loop.
*
*
* for ( int i : range( 0, 10, 3 ) )
* System.out.print( i + " " ); // 0 3 6 9
*
*
* @author Christian Ullenboom (tutego)
* @version 1.0
*/
public class Range
{
public static Iterable range( final int start, final int stop, final int step )
{
if ( step <= 0 )
throw new IllegalArgumentException( "step > 0 isrequired!" );
return new Iterable()
{
public Iterator iterator()
{
return new Iterator()
{
private int counter = start;
public boolean hasNext()
{
return counter < stop;
}
public Integer next()
{
try
{
return counter;
}
finally { counter += step; }
}
public void remove() { }
};
}
};
}
public static Iterable range( final int start, final int stop )
{
return range( start, stop, 1 );
}
public static Iterable range( final int stop )
{
return range( 0, stop, 1 );
}
}
This is an example:
package com.tutego;
import static com.tutego.Range.range;
public class RangeDemo
{
public static void main( String[] args )
{
for ( int i : range( 10 ) )
System.out.print( i + " " );
System.out.println();
for ( int i : range( 5, 10 ) )
System.out.print( i + " " );
System.out.println();
for ( int i : range( 0, 10, 3 ) )
System.out.print( i + " " );
System.out.println();
for ( int i : range( '0', '9' ) )
System.out.print( (char) i );
System.out.println();
String[] a = { "Mary", "had", "a", "little", "lamb" };
for ( int i : range(a.length ) )
System.out.printf( "%d %s%n", i, a[i] );
}
}
Java (programming language)
Opinions expressed by DZone contributors are their own.
Comments