code: public static boolean areEqual(SparseArray<?> sparseArray, Object o) {
      if (sparseArray == o) {
        return true;
      }
      if (o == null) {
        return false;
      }
      SparseArray<?> other = (SparseArray<?>) o;
      if (sparseArray.size() == other.size()) {
        return sparseArray.keyStream().allMatch(key -> Objects.equals(sparseArray.get(key), other.get(key)));
      }
      return false;
    }
docs: The {@code Object.equals(Object)} contract for a {@link SparseArray}.
  <p>
  <pre>
  if (sparseArray == o) {
  return true;
  }
  if (o == null) {
  return false;
  }
  SparseArray&lt;?> other = (SparseArray&lt;?>) o;
  if (sparseArray.size() == other.size()) {
  return sparseArray.keyStream().allMatch(key -> Objects.equals(sparseArray.get(key), other.get(key)));
  }
  return false;
  </pre>
  
  @param sparseArray the sparse array
  @param o           another object or null
  @return true if equal