### Question:
QueueItemComparator implements Comparator<QueueItem<?>>, Serializable { @Override public int compare(QueueItem<?> queueItem1, QueueItem<?> queueItem2) { if (queueItem1.getPriority() < queueItem2.getPriority()) { return -1; } else if (queueItem1.getPriority() > queueItem2.getPriority()) { return 1; } return 0; } private  QueueItemComparator(); @Override int compare(QueueItem<?> queueItem1, QueueItem<?> queueItem2);  }### Answer:
@Test public void compareTest() { for (int tileSize : TILE_SIZES) { Tile tile1 = new Tile(0, 0, (byte) 1); Tile tile2 = new Tile(0, 0, (byte) 2); QueueItem<?> queueItem1 = new QueueItem<Job>(new Job(tile1, tileSize, false)); QueueItem<?> queueItem2 = new QueueItem<Job>(new Job(tile2, tileSize, false)); QueueItemComparator queueItemComparator = QueueItemComparator.INSTANCE; Assert.assertEquals(0, queueItemComparator.compare(queueItem1, queueItem2), 0); queueItem1.setPriority(1); queueItem2.setPriority(2); Assert.assertTrue(queueItemComparator.compare(queueItem1, queueItem2) < 0); Assert.assertTrue(queueItemComparator.compare(queueItem2, queueItem1) > 0); } }
@Test public void compareTest() { for (int tileSize : TILE_SIZES) { Tile tile1 = new Tile(0, 0, (byte) 1, tileSize); Tile tile2 = new Tile(0, 0, (byte) 2, tileSize); QueueItem<?> queueItem1 = new QueueItem<Job>(new Job(tile1, false)); QueueItem<?> queueItem2 = new QueueItem<Job>(new Job(tile2, false)); QueueItemComparator queueItemComparator = QueueItemComparator.INSTANCE; Assert.assertEquals(0, queueItemComparator.compare(queueItem1, queueItem2), 0); queueItem1.setPriority(1); queueItem2.setPriority(2); Assert.assertTrue(queueItemComparator.compare(queueItem1, queueItem2) < 0); Assert.assertTrue(queueItemComparator.compare(queueItem2, queueItem1) > 0); } }