阅读kvstore\ArrayWrappers.java(3)

ComparableIntArray 的实现

  private static class ComparableIntArray implements Comparable<ComparableIntArray> {

    private final int[] array;

    ComparableIntArray(int[] array) {
      this.array = array;
    }

    @Override
    public boolean equals(Object other) {
      if (!(other instanceof ComparableIntArray)) {
        return false;
      }
      return Arrays.equals(array, ((ComparableIntArray) other).array);
    }

    @Override
    public int hashCode() {
      int code = 0;
      for (int i = 0; i < array.length; i++) {
        code = (code * 31) + array[i];
      }
      return code;
    }

    @Override
    public int compareTo(ComparableIntArray other) {
      int len = Math.min(array.length, other.array.length);
      for (int i = 0; i < len; i++) {
        int diff = array[i] - other.array[i];
        if (diff != 0) {
          return diff;
        }
      }

      return array.length - other.array.length;
    }
  }

  两个数组,里面元素一个接一个的比较

posted @ 2019-09-17 17:26  瑶来瑶去  阅读(84)  评论(0)    收藏  举报