aboutsummaryrefslogtreecommitdiffstats
path: root/vespajlib/src/main/java/com/yahoo/tensor/TensorAddress.java
diff options
context:
space:
mode:
authorJon Bratseth <jonbratseth@yahoo.com>2016-11-26 22:45:20 +0100
committerGitHub <noreply@github.com>2016-11-26 22:45:20 +0100
commit2f55986b4de9420e5728c5abbaafb69fb2f10a34 (patch)
tree9a6a77f76d25620771dfe7ab5de49910c4321fc5 /vespajlib/src/main/java/com/yahoo/tensor/TensorAddress.java
parent2bc82ba9d9698214e703f19039387609d82b12f8 (diff)
Revert "Revert "Bratseth/tensor functions 3""
Diffstat (limited to 'vespajlib/src/main/java/com/yahoo/tensor/TensorAddress.java')
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/TensorAddress.java31
1 files changed, 11 insertions, 20 deletions
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/TensorAddress.java b/vespajlib/src/main/java/com/yahoo/tensor/TensorAddress.java
index 11c6a5f6685..e3c089de071 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/TensorAddress.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/TensorAddress.java
@@ -8,12 +8,11 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
+import java.util.Optional;
import java.util.Set;
/**
* An immutable address to a tensor cell.
- * This is sparse: Only dimensions which have a different label than "undefined" are
- * explicitly included.
* <p>
* Tensor addresses are ordered by increasing size primarily, and by the natural order of the elements in sorted
* order secondarily.
@@ -66,14 +65,6 @@ public final class TensorAddress implements Comparable<TensorAddress> {
return TensorAddress.fromSorted(elements);
}
- /** Creates an empty address with a set of dimensions */
- public static TensorAddress emptyWithDimensions(Set<String> dimensions) {
- List<Element> elements = new ArrayList<>(dimensions.size());
- for (String dimension : dimensions)
- elements.add(new Element(dimension, Element.undefinedLabel));
- return TensorAddress.fromUnsorted(elements);
- }
-
/** Returns an immutable list of the elements of this address in sorted order */
public List<Element> elements() { return elements; }
@@ -93,6 +84,14 @@ public final class TensorAddress implements Comparable<TensorAddress> {
return dimensions;
}
+ /** Returns the label at the given dimension, or empty if this dimension is not present */
+ public Optional<String> labelOfDimension(String dimension) {
+ for (TensorAddress.Element element : elements)
+ if (element.dimension().equals(dimension))
+ return Optional.of(element.label());
+ return Optional.empty();
+ }
+
@Override
public int compareTo(TensorAddress other) {
int sizeComparison = Integer.compare(this.elements.size(), other.elements.size());
@@ -123,7 +122,6 @@ public final class TensorAddress implements Comparable<TensorAddress> {
public String toString() {
StringBuilder b = new StringBuilder("{");
for (TensorAddress.Element element : elements) {
- //if (element.label() == Element.undefinedLabel) continue;
b.append(element.toString());
b.append(",");
}
@@ -136,18 +134,13 @@ public final class TensorAddress implements Comparable<TensorAddress> {
/** A tensor address element. Elements have the lexical order of the dimensions as natural order. */
public static class Element implements Comparable<Element> {
- static final String undefinedLabel = "-";
-
private final String dimension;
private final String label;
private final int hashCode;
public Element(String dimension, String label) {
this.dimension = dimension;
- if (label.equals(undefinedLabel))
- this.label = undefinedLabel;
- else
- this.label = label;
+ this.label = label;
this.hashCode = dimension.hashCode() + label.hashCode();
}
@@ -175,9 +168,7 @@ public final class TensorAddress implements Comparable<TensorAddress> {
@Override
public String toString() {
- StringBuilder b = new StringBuilder();
- b.append(dimension).append(":").append(label);
- return b.toString();
+ return dimension + ":" + label;
}
}