RE: Java: Using Comparable to Establish Natural Order

  • From: "Adrian Beech" <a.beech@xxxxxxxxxxxxxx>
  • To: <programmingblind@xxxxxxxxxxxxx>
  • Date: Sat, 29 Nov 2008 13:11:48 +1000

G'day,

Chances are your getting odd behaviour because the signed int is not big
enough to cater for the difference between the two arbitrary doubles.  A
safer way would be to return either -1, 0 or 1 depending on the comparisons
between the two calculated values.

For example:

Int result = 0;
If (val1 > val2) {
  Result = 1;
}
Else if (val1 < val2) {
  Result = -1;
}

Return result;

Change the 1 and -1 accordingly depending on the desired sort order.

Hope this helps.

Cheers.
AB

-----Original Message-----
From: programmingblind-bounce@xxxxxxxxxxxxx
[mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of Jared Wright
Sent: Saturday, 29 November 2008 10:16 AM
To: programmingblind@xxxxxxxxxxxxx
Subject: Re: Java: Using Comparable to Establish Natural Order

Nope. Had migrated to other bits and pieces of code in the little bit of 
time I had on Thanksgiving. Would still appreciate any thoughts or 
suggestions you might have.

JW

Ken Perry wrote:
> Did you get this working I am just now catching up with mail.
>
> Ken
>
> -----Original Message-----
> From: programmingblind-bounce@xxxxxxxxxxxxx
> [mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of Jared Wright
> Sent: Thursday, November 27, 2008 12:28 PM
> To: programmingblind@xxxxxxxxxxxxx
> Subject: Java: Using Comparable to Establish Natural Order
>
> Hi all, I've used comparable before, but with this go 'round I have 
> found I must be missing something. I'm trying to use Comparable to 
> establish the natural order of an Item class. Each item has a cost, 
> size, and with these two values, the "value" of the item can be 
> calculated. I wish for this value metric to be the index for the items' 
> natural ordering, so priority queues and collection sorting methods will 
> use this to order item objects. With the below code, my items are all 
> returned to me from a priority queue simply in the reverse order they 
> were added to the queue. Suggestions aappreciated, and I'll give much 
> thanks on this of all days for any help! *grin* I am trying to have it 
> order items with highest values first.
>
> Best,
> JW
>
>
> // Class representing an item.
> class Item implements Comparable {
>     private double cost=0; private double size=0;
>     public Item(double dCost, double dSize) {
>         cost = dCost;
>         size = dSize;
>     }
>     public double getCost() {
>         return cost;
>     }
>     public double getSize() {
>         return size;
>     }
>     public double getValue() {
>         return cost/size;
>     }
>     public int compareTo(Object oItem) {
>         double oItemValue = ((Item)oItem).getValue();
>         double result = ((this.getValue()))-oItemValue;
>         return (int)result;
>     }
>     }
> __________
> View the list's information and change your settings at 
> //www.freelists.org/list/programmingblind
>
> __________
> View the list's information and change your settings at 
> //www.freelists.org/list/programmingblind
>
>
>   

__________
View the list's information and change your settings at 
//www.freelists.org/list/programmingblind



__________ NOD32 3650 (20081128) Information __________

This message was checked by NOD32 antivirus system.
http://www.eset.com


__________
View the list's information and change your settings at 
//www.freelists.org/list/programmingblind

Other related posts: