示例#1
1
 @Override
 public Vector<Vector<T>> permutations() {
   if (isEmpty()) {
     return Vector.empty();
   } else {
     final Vector<T> tail = tail();
     if (tail.isEmpty()) {
       return Vector.of(this);
     } else {
       final Vector<Vector<T>> zero = empty();
       // TODO: IntelliJ IDEA 14.1.1 needs a redundant cast here, jdk 1.8.0_40 compiles fine
       return distinct()
           .foldLeft(
               zero,
               (xs, x) ->
                   xs.appendAll(
                       remove(x)
                           .permutations()
                           .map((Function<Vector<T>, Vector<T>>) l -> l.prepend(x))));
     }
   }
 }
示例#2
0
 @Override
 public boolean equals(Object o) {
   if (o == this) {
     return true;
   } else if (o instanceof Vector) {
     Vector<?> vector1 = this;
     Vector<?> vector2 = (Vector<?>) o;
     while (!vector1.isEmpty() && !vector2.isEmpty()) {
       final boolean isEqual = Objects.equals(vector1.head(), vector2.head());
       if (!isEqual) {
         return false;
       }
       vector1 = vector1.tail();
       vector2 = vector2.tail();
     }
     return vector1.isEmpty() && vector2.isEmpty();
   } else {
     return false;
   }
 }