|
@@ -1,48 +1,46 @@
|
|
|
-/*
|
|
|
|
|
- * @author Ranides Atterwim <ranides@gmail.com>
|
|
|
|
|
- * @copyright Ranides Atterwim
|
|
|
|
|
- * @license WTFPL
|
|
|
|
|
- * @url http://ranides.net/projects/assira
|
|
|
|
|
- */
|
|
|
|
|
-package net.ranides.assira.collection.map;
|
|
|
|
|
-
|
|
|
|
|
-import java.util.Arrays;
|
|
|
|
|
-import net.ranides.assira.collection.ArrayUtils;
|
|
|
|
|
-
|
|
|
|
|
-/**
|
|
|
|
|
- * <p>
|
|
|
|
|
- * Klasa grupująca obiekty, i tworząca na ich podstawie jeden złożony klucz,
|
|
|
|
|
- * spełniający kryteria wymagane przez instancje {@link java.util.Map}.
|
|
|
|
|
- * </p><p>
|
|
|
|
|
- * Uwaga! Klucz nie pozwala na bezpośredni dostęp lub modyfikację składowych, ale
|
|
|
|
|
- * jeśli składowe nie są <i>immutable</i>, a referencje do nich zostaną wykorzystane
|
|
|
|
|
- * do modyfikacji składowych, to również {@code CompositeKey} natychmiast
|
|
|
|
|
- * odwzoruje te zmiany.
|
|
|
|
|
- * </p>
|
|
|
|
|
- * @author ranides
|
|
|
|
|
- * @todo (migration) assira
|
|
|
|
|
- * jako Tuple
|
|
|
|
|
- */
|
|
|
|
|
-public class CompositeKey {
|
|
|
|
|
-
|
|
|
|
|
- private final Object[] keys;
|
|
|
|
|
-
|
|
|
|
|
- /**
|
|
|
|
|
- * Tworzy nowy klucz na podstawie podanych wartości.
|
|
|
|
|
- * @param keys
|
|
|
|
|
- */
|
|
|
|
|
- public CompositeKey(Object... keys) {
|
|
|
|
|
- this.keys = ArrayUtils.arraycopy(keys);
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- @Override
|
|
|
|
|
- public boolean equals(Object value) {
|
|
|
|
|
- return (value instanceof CompositeKey) && Arrays.equals(keys, ((CompositeKey) value).keys);
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- @Override
|
|
|
|
|
- public int hashCode() {
|
|
|
|
|
- return Arrays.hashCode(this.keys);
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
-}
|
|
|
|
|
|
|
+/*
|
|
|
|
|
+ * @author Ranides Atterwim <ranides@gmail.com>
|
|
|
|
|
+ * @copyright Ranides Atterwim
|
|
|
|
|
+ * @license WTFPL
|
|
|
|
|
+ * @url http://ranides.net/projects/assira
|
|
|
|
|
+ */
|
|
|
|
|
+package net.ranides.assira.collection.map;
|
|
|
|
|
+
|
|
|
|
|
+import java.util.Arrays;
|
|
|
|
|
+import net.ranides.assira.collection.ArrayUtils;
|
|
|
|
|
+
|
|
|
|
|
+/**
|
|
|
|
|
+ * <p>
|
|
|
|
|
+ * Klasa grupująca obiekty, i tworząca na ich podstawie jeden złożony klucz,
|
|
|
|
|
+ * spełniający kryteria wymagane przez instancje {@link java.util.Map}.
|
|
|
|
|
+ * </p><p>
|
|
|
|
|
+ * Uwaga! Klucz nie pozwala na bezpośredni dostęp lub modyfikację składowych, ale
|
|
|
|
|
+ * jeśli składowe nie są <i>immutable</i>, a referencje do nich zostaną wykorzystane
|
|
|
|
|
+ * do modyfikacji składowych, to również {@code CompositeKey} natychmiast
|
|
|
|
|
+ * odwzoruje te zmiany.
|
|
|
|
|
+ * </p>
|
|
|
|
|
+ * @author ranides
|
|
|
|
|
+ */
|
|
|
|
|
+public class CompositeKey {
|
|
|
|
|
+
|
|
|
|
|
+ private final Object[] keys;
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * Tworzy nowy klucz na podstawie podanych wartości.
|
|
|
|
|
+ * @param keys
|
|
|
|
|
+ */
|
|
|
|
|
+ public CompositeKey(Object... keys) {
|
|
|
|
|
+ this.keys = ArrayUtils.arraycopy(keys);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public boolean equals(Object value) {
|
|
|
|
|
+ return (value instanceof CompositeKey) && Arrays.equals(keys, ((CompositeKey) value).keys);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public int hashCode() {
|
|
|
|
|
+ return Arrays.hashCode(this.keys);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+}
|