I am implementing Comparable
interface on a trivial class that wraps a single int
member.
I can implement it this way:
@Override
public int compareTo ( final MyType o )
{
return
Integer.valueOf( this.intVal ).compareTo(
Integer.valueOf( o.intVal )
);
}
But this (maybe) creates 2 totally unnecessary Integer objects.
Or I can go tried and true cut-and-paste approach from Integer class:
@Override
public int compareTo ( final MyType o )
{
int thisVal = this.intValue;
int anotherVal = o.intValue;
return (thisVal<anotherVal ? -1 : (thisVal==anotherVal ? 0 : 1));
}
This is pretty efficient, but duplicates code unnecessary.
Is there a library that would implement this missing Integer
( and Double and Float ) method?
public static int compare ( int v1, int v2 );
int
, write your own compare
method (it requires at most three lines of
code).double
, use Double.compare
(not to be confused with
compareTo
).float
, use Float.compare
.The last two take primitive types and thus avoid boxing and unboxing. I can see an argument for Integer
providing a similar compare
method, but as things stand it doesn't.
In Java 7, static int compare
for primitive types have been added to all primitive object wrapper classes, i.e there is now:
java.lang.Integer: static int compare( int x, int y );
java.lang.Byte: static int compare( byte x, byte y );
java.lang.Short: static int compare( short x, short y );
etc...
Maybe, I'm missing something, but IMHO this is a weird question.
Is there a library that would implement this missing
Integer
( and Double and Float ) method?public static int compare ( int v1, int v2 );
Well, I think this does the job:
public static int compare ( int v1, int v2 )
{
if (v1 < v2) return -1;
if (v1 > v2) return 1;
return 0;
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With