If the placement doesn't matter, why is returning 0 a problem? I'm
just wondering if this doesn't introduce some subtle bugs in the way
that not implementing hashCode/equals does. it may happen to work here
but later...

The overflow problem is remote, but not trivial... can support be
large? like anywhere near a billion? then it's a possible bug.

On Fri, Jan 8, 2010 at 6:26 PM, Robin Anil <robin.a...@gmail.com> wrote:
> That one was specifc to ordering of sub patterns in Fpgrowth stage. I did
> that as an optimisation where in the object needs to be at a random place in
> the heap if they are of equal length and support. Since it is the most
> called function in the entire algorithm, I got some performance benefit from
> it, because there were many patterns of the same length and support by
> differnet pattern underneath. Plus there is no need of comparing the two
> arrays which would be expensive.  If the compareTo contract has to be
> maintained, I will move it out to another class and use it as the comparator
> during heap initialization.
>
>
> public int compareTo(Pattern cr2) {
>    long support2 = cr2.support();
>    int length2 = cr2.length();
>    if (support == support2) {
>      if (length == length2) {
>        // if they are of same length and support order randomly
>        return 1;
>      } else {
>        return length - length2;
>      }
>    } else {
>      if (support > support2) {
>        return 1;
>      } else {
>        return -1;
>      }
>    }
>  }
>
> On Fri, Jan 8, 2010 at 2:58 PM, Sean Owen <sro...@gmail.com> wrote:
>
>> I see some compareTo() methods with logic like this --
>>
>> int a = object1.foo();
>> int b = object2.foo();
>> if (a == b) {
>>  return 1; // order randomly
>> } else {
>>  return a - b;
>> }
>>
>> Three problems here:
>> - This does not produce a random ordering when used with a sort; it's
>> quite deterministic
>> - This violates the contract of compareTo() -- true that
>> a.compareTo(b) = -b.compareTo(a)
>> - "a-b" can overflow and give the wrong sign
>>
>> Mind if I fix?
>>
>> There's still code going in with lots of variances from what I think
>> are our agreed standards too.
>>
>> Sean
>>
>

Reply via email to