public static <T extends Comparable<? super T>> int compareLists( List<? extends T> list1, List<? extends T> list2 ) { Comparator<T> comparator = new Comparator<T>() { @Override public int compare(T o1, T o2) { return o1.compareTo(o2); } }; return compareLists(list1, list2, comparator); }
public static <T extends Comparable<? super T>> int compareArrays( T[] array1, T[] array2 ) { Comparator<T> comparator = new Comparator<T>() { @Override public int compare(T o1, T o2) { return o1.compareTo(o2); } }; return compareArrays( array1, array2, comparator); }
@Override public int compareTo(Datum o) { if (o instanceof ListDatum) { ListDatum otherListDatum = (ListDatum) o; return Lists.compareLists(datumList, otherListDatum.datumList); } else { throw new IllegalArgumentException( String.format( "ListDatum cannot compare to %s", o.getClass() ) ); } }
@Test(groups = "fast") public void testCompare1() throws Exception { // {2, 3, 3} byte[] bytes1 = PackedByteArray.packComparable( original[0] ); // {2, 3, 2} byte[] bytes2 = PackedByteArray.packComparable( original[1] ); // => -1 Assert.assertEquals(Lists.compareArrays(bytes1, bytes2), -1); }
@Override public int compareTo(Datum o) { if (!(o instanceof MapDatum)) { throw new IllegalArgumentException("need MapDatum"); } @SuppressWarnings({"unchecked"}) MapDatum otherMapDatum = (MapDatum) o; // this is only used in InMemoryStorage for unit tests, so it can e // inefficient; this is terribly inefficient, but it provides // some way to comapre maps :) List<Map.Entry<Datum, Datum>> entryList1 = new ArrayList<>(map.entrySet()); List<Map.Entry<Datum, Datum>> entryList2 = new ArrayList<>(otherMapDatum.map.entrySet()); Collections.sort(entryList1, ENTRY_COMPARATOR); Collections.sort(entryList2, ENTRY_COMPARATOR); return Lists.compareLists(entryList1, entryList2, ENTRY_COMPARATOR); }
@Test(groups = "fast") public void testCompare2() throws Exception { // { {0, 0, 1} } byte[] bytes1 = PackedByteArray.packComparable( original[1] ); // {{0, 1}, {0} } byte[] bytes2 = PackedByteArray.packComparable( original[5], original[6] ); // => 1 Assert.assertEquals(Lists.compareArrays(bytes1, bytes2), 1); }
@Test(groups = "fast") public void testSanity() throws Exception { Assert.assertEquals(Lists.compareLists(list1, list1), 0); Assert.assertEquals(Lists.compareLists(list1, list2), -1); Assert.assertEquals(Lists.compareLists(list1, list3), -1); Assert.assertEquals(Lists.compareLists(list2, list1), 1); Assert.assertEquals(Lists.compareLists(list2, list2), 0); Assert.assertEquals(Lists.compareLists(list2, list3), 1); Assert.assertEquals(Lists.compareLists(list3, list1), 1); Assert.assertEquals(Lists.compareLists(list3, list2), -1); Assert.assertEquals(Lists.compareLists(list3, list3), 0); } }
@Test(groups = "fast") public void testCompare1() throws Exception { // {2, 3, 3} byte[] bytes1 = PackedByteArray.packComparable( original[0] ); // {2, 3, 2} byte[] bytes2 = PackedByteArray.packComparable( original[1] ); // => -1 Assert.assertEquals(Lists.compareArrays(bytes1, bytes2), -1); }
@Test(groups = "fast") public void testSanity() throws Exception { Assert.assertEquals(Lists.compareLists(list1, list1), 0); Assert.assertEquals(Lists.compareLists(list1, list2), -1); Assert.assertEquals(Lists.compareLists(list1, list3), -1); Assert.assertEquals(Lists.compareLists(list2, list1), 1); Assert.assertEquals(Lists.compareLists(list2, list2), 0); Assert.assertEquals(Lists.compareLists(list2, list3), 1); Assert.assertEquals(Lists.compareLists(list3, list1), 1); Assert.assertEquals(Lists.compareLists(list3, list2), -1); Assert.assertEquals(Lists.compareLists(list3, list3), 0); } }
@Test(groups = "fast") public void testCompare2() throws Exception { // { {0, 0, 1} } byte[] bytes1 = PackedByteArray.packComparable( original[1] ); // {{0, 1}, {0} } byte[] bytes2 = PackedByteArray.packComparable( original[5], original[6] ); // => 1 Assert.assertEquals(Lists.compareArrays(bytes1, bytes2), 1); }