diff options
author | Jon Bratseth <jonbratseth@yahoo.com> | 2016-11-26 22:45:20 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-11-26 22:45:20 +0100 |
commit | 2f55986b4de9420e5728c5abbaafb69fb2f10a34 (patch) | |
tree | 9a6a77f76d25620771dfe7ab5de49910c4321fc5 /vespajlib/src/main/java/com/yahoo/tensor/TensorAddress.java | |
parent | 2bc82ba9d9698214e703f19039387609d82b12f8 (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.java | 31 |
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; } } |