Re: when will Tuple be std?
Eric Sosman <esosman@ieee-dot-org.invalid> writes:
If there's something else you're after, you'll need
to explain more fully; I'm feeling particularly dense
today.
Sometimes, one wants to handle (e.g., compare) pairs in the
sense, that two pairs are equal if both components are, and
one does /not/ want to write a custom class each time but
reuse a common tuple class, because one does not need more
methods beyond those for comparison.
For example, my library
http://www.purl.org/stefan_ram/pub/ram-jar
has a ?comparable tuple? class, so one can execute the
following program.
public class Main
{
/** A convenience method to construct a tuple. */
static de.dclj.ram.type.tuple.ComparableTuple
<de.dclj.ram.type.tuple.DefaultComparableTuple>
tuple( java.lang.Comparable ... args ) { return new
de.dclj.ram.type.tuple.DefaultComparableTuple( args ); }
final static java.lang.String nl =
java.lang.System.getProperty( "line.separator" );
public static void main( final java.lang.String[] args )
{
java.lang.System.out.println
( tuple( 12000, "beta" ).hashCode() + nl +
tuple( 12000, "beta" ).hashCode() + nl +
tuple( 12001, "beta" ).hashCode() + nl +
tuple( 12000, "betb" ).hashCode() + nl +
tuple( 12000, "beta" ).equals( tuple( 12000, "beta" )) + nl +
tuple( 12000, "beta" ).equals( tuple( 12001, "beta" )) + nl +
tuple( 12000, "beta" ).equals( tuple( 12000, "betb" )) + nl );
final java.util.List<de.dclj.ram.type.tuple.ComparableTuple> list
= new java.util.ArrayList<de.dclj.ram.type.tuple.ComparableTuple>();
list.add( tuple( 12000, "gamma" ));
list.add( tuple( 10000, "alpha" ));
list.add( tuple( 20000, "delta" ));
list.add( tuple( 12000, "beta" ));
java.util.Collections.sort( list );
java.lang.System.out.println( list ); }}
3029778
3029778
3029779
3029779
true
false
false
[( 10000; "alpha" ), ( 12000; "beta" ), ( 12000; "gamma" ), ( 20000; "delta" )]
With Java SE, a good approximation is to use an array and the
static ?hashCode? and ?equals? methods from java.util.Arrays.