Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Comparison method violates its general contract

user3369008

Disclaimer: I saw the thread about transitivity of comparison functions, but I don't think mine are bad/I dont see mistake in them

So I wrote a simulation of rabbits and wolfs - there is a set amount of wolves and rabbits in the beginning, rabbits run away from wolfs and wolfs chase rabbits, when they meet in the same block rabbit gets killed and simulation ends when there are no rabbits left.

For small boards, up till about 32x32 all is ok, but for 64+ I get the following error while running.

Also, here are my 3 comparison functions:

lBlocks are JLabels, hare/wolf/killer are icons

public  synchronized boolean isEmpty(int x, int y){
    if(!(lBlocks[x][y].getIcon() instanceof Icon)) return true;
    return false;
}


public  synchronized boolean isWolf(int x, int y){
    if(!(lBlocks[x][y].getIcon() instanceof Icon)) return false;
    if(lBlocks[x][y].getIcon().equals(hare)||lBlocks[x][y].getText().equals("h")||isEmpty(x,y)) return false;
    return true;
}

public  synchronized boolean isHare(int x, int y){
    if(!(lBlocks[x][y].getIcon() instanceof Icon)) return false;
    if(isEmpty(x,y)||isWolf(x,y)) return false;
    return true;
}

Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Comparison method violates its general contract!
    at java.util.TimSort.mergeLo(TimSort.java:747)
    at java.util.TimSort.mergeAt(TimSort.java:483)
    at java.util.TimSort.mergeCollapse(TimSort.java:410)
    at java.util.TimSort.sort(TimSort.java:214)
    at java.util.TimSort.sort(TimSort.java:173)
    at java.util.Arrays.sort(Arrays.java:659)
    at java.util.Collections.sort(Collections.java:217)
    at javax.swing.SortingFocusTraversalPolicy.enumerateAndSortCycle(SortingFocusTraversalPolicy.java:136)
    at javax.swing.SortingFocusTraversalPolicy.getFocusTraversalCycle(SortingFocusTraversalPolicy.java:110)
    at javax.swing.SortingFocusTraversalPolicy.getFirstComponent(SortingFocusTraversalPolicy.java:435)
    at javax.swing.LayoutFocusTraversalPolicy.getFirstComponent(LayoutFocusTraversalPolicy.java:166)
    at javax.swing.SortingFocusTraversalPolicy.getDefaultComponent(SortingFocusTraversalPolicy.java:515)
    at javax.swing.SortingFocusTraversalPolicy.getComponentDownCycle(SortingFocusTraversalPolicy.java:204)
    at javax.swing.SortingFocusTraversalPolicy.getFirstComponent(SortingFocusTraversalPolicy.java:447)
    at javax.swing.LayoutFocusTraversalPolicy.getFirstComponent(LayoutFocusTraversalPolicy.java:166)
    at javax.swing.SortingFocusTraversalPolicy.getDefaultComponent(SortingFocusTraversalPolicy.java:515)
    at java.awt.FocusTraversalPolicy.getInitialComponent(FocusTraversalPolicy.java:169)
    at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:380)
    at java.awt.Component.dispatchEventImpl(Component.java:4731)
    at java.awt.Container.dispatchEventImpl(Container.java:2287)
    at java.awt.Window.dispatchEventImpl(Window.java:2719)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:694)
    at java.awt.EventQueue$3.run(EventQueue.java:692)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
    at java.awt.EventQueue$4.run(EventQueue.java:708)
    at java.awt.EventQueue$4.run(EventQueue.java:706)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
    at java.awt.SequencedEvent.dispatch(SequencedEvent.java:128)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:694)
    at java.awt.EventQueue$3.run(EventQueue.java:692)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
    at java.awt.EventQueue$4.run(EventQueue.java:708)
    at java.awt.EventQueue$4.run(EventQueue.java:706)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

The thing is, it does not do absolutely anything - code is working and simulation is going on, but I want to fix it. The worst fact is that there is no line where the error is ocurring and I have a lot of .equals (code is about 400 lines altogether) - I don't know where to find my mistake :(

edit: I found out that if both x and y of board are more than 57 this problem occurs, if they are smaller (or atleast one of them) it does not, lol.

Aarowaim

The quick solution appears to be: System.setProperty("java.util.Arrays.useLegacyMergeSort", "true"); According to this answer.

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

java.lang.IllegalArgumentException: Comparison method violates its general contract

From Dev

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException

From Dev

Java sort throws java.lang.IllegalArgumentException: Comparison method violates its general contract

From Dev

java.lang.IllegalArgumentException: Comparison method violates its general contract! java.util.Date

From Dev

java.lang.IllegalArgumentException Comparison method violates its general contract! in Collections#sort

From Dev

Random error - java.lang.IllegalArgumentException: Comparison method violates its general contract

From Dev

java exception: Comparison method violates its general contract

From Dev

Exception in thread "AWT-EventQueue-0" java.lang.IllegalMonitorStateException at java.lang.Object.notify(Native Method)

From Dev

Collections.sort - IllegalArgumentException: Comparison method violates its general contract

From Dev

IllegalArgumentException: Comparison method violates its general contract! on Integer[]

From Dev

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException in basic Java GUI interest calculator

From Dev

java parseint - Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: ""

From Dev

What is this: Exception in thread "AWT-EventQueue-0" java.lang.ExceptionInInitializerError?

From Dev

Matlab reports "Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException"

From Dev

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException [NetBeans]

From Dev

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException if-statement

From Dev

Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: javax.swing.JButton

From Dev

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "11101110110100011110111011010001"

From Dev

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException Login form error

From Dev

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException For Loops

From Dev

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException (Panel displays before fully loaded?)

From Dev

NetBeans Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: DSA

From Dev

Exception in thread "AWT-EventQueue-0" java.lang.StringIndexOutOfBoundsException: String index out of range: 8

From Dev

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 100

From Dev

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException and JTable problems

From Dev

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException in GUI?

From Dev

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "FALSE"

From Dev

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException and how to fix it?

From Dev

IllegalArgumentException: Comparison method violates general contract

Related Related

  1. 1

    java.lang.IllegalArgumentException: Comparison method violates its general contract

  2. 2

    Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException

  3. 3

    Java sort throws java.lang.IllegalArgumentException: Comparison method violates its general contract

  4. 4

    java.lang.IllegalArgumentException: Comparison method violates its general contract! java.util.Date

  5. 5

    java.lang.IllegalArgumentException Comparison method violates its general contract! in Collections#sort

  6. 6

    Random error - java.lang.IllegalArgumentException: Comparison method violates its general contract

  7. 7

    java exception: Comparison method violates its general contract

  8. 8

    Exception in thread "AWT-EventQueue-0" java.lang.IllegalMonitorStateException at java.lang.Object.notify(Native Method)

  9. 9

    Collections.sort - IllegalArgumentException: Comparison method violates its general contract

  10. 10

    IllegalArgumentException: Comparison method violates its general contract! on Integer[]

  11. 11

    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException in basic Java GUI interest calculator

  12. 12

    java parseint - Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: ""

  13. 13

    What is this: Exception in thread "AWT-EventQueue-0" java.lang.ExceptionInInitializerError?

  14. 14

    Matlab reports "Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException"

  15. 15

    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException [NetBeans]

  16. 16

    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException if-statement

  17. 17

    Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: javax.swing.JButton

  18. 18

    Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "11101110110100011110111011010001"

  19. 19

    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException Login form error

  20. 20

    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException For Loops

  21. 21

    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException (Panel displays before fully loaded?)

  22. 22

    NetBeans Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: DSA

  23. 23

    Exception in thread "AWT-EventQueue-0" java.lang.StringIndexOutOfBoundsException: String index out of range: 8

  24. 24

    Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 100

  25. 25

    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException and JTable problems

  26. 26

    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException in GUI?

  27. 27

    Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "FALSE"

  28. 28

    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException and how to fix it?

  29. 29

    IllegalArgumentException: Comparison method violates general contract

HotTag

Archive