01 package io.jenetics.ext.moea;
02
03 import static java.util.Objects.requireNonNull;
04
05 import java.util.Arrays;
06 import java.util.Comparator;
07
08 final class SimpleObjectVec<T> implements Vec<T[]> {
09 private final T[] _data;
10 private final Comparator<? super T> _comparator;
11 private final ElementDistance<T[]> _distance;
12
13 SimpleObjectVec(
14 final T[] data,
15 final Comparator<? super T> comparator,
16 final ElementDistance<T[]> distance
17 ) {
18 Vecs.checkVecLength(data.length);
19 _data = data;
20 _comparator = requireNonNull(comparator);
21 _distance = requireNonNull(distance);
22 }
23
24 @Override
25 public T[] data() {
26 return _data;
27 }
28
29 @Override
30 public int length() {
31 return _data.length;
32 }
33
34 @Override
35 public ElementComparator<T[]> comparator() {
36 return (u, v, i) -> _comparator.compare(u[i], v[i]);
37 }
38
39 @Override
40 public ElementDistance<T[]> distance() {
41 return _distance;
42 }
43
44 @Override
45 public Comparator<T[]> dominance() {
46 return (u, v) -> Vec.dominance(u, v, _comparator);
47 }
48
49 @Override
50 public int hashCode() {
51 return Arrays.hashCode(_data);
52 }
53
54 @Override
55 public boolean equals(final Object obj) {
56 return obj == this ||
57 obj instanceof SimpleObjectVec &&
58 Arrays.equals(((SimpleObjectVec)obj)._data, _data);
59 }
60
61 @Override
62 public String toString() {
63 return Arrays.toString(_data);
64 }
65
66 }
|