summaryrefslogtreecommitdiffstats
path: root/vespajlib/src/main/java/com/yahoo/tensor/MixedTensor.java
diff options
context:
space:
mode:
authorLester Solbakken <lesters@oath.com>2019-02-20 14:30:31 +0100
committerLester Solbakken <lesters@oath.com>2019-02-20 14:30:31 +0100
commitc85a3fee56c13f82d14d480e7569432e1f352316 (patch)
tree1ba19b8b498a7c4e0004939a8139fcfbd8d75875 /vespajlib/src/main/java/com/yahoo/tensor/MixedTensor.java
parent085b6922c07f4626c61e2ed2e6dde6beec0855de (diff)
TensorRemoveUpdate support for mixed tensors
Diffstat (limited to 'vespajlib/src/main/java/com/yahoo/tensor/MixedTensor.java')
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/MixedTensor.java18
1 files changed, 18 insertions, 0 deletions
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/MixedTensor.java b/vespajlib/src/main/java/com/yahoo/tensor/MixedTensor.java
index 3630a016691..00229c56171 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/MixedTensor.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/MixedTensor.java
@@ -6,9 +6,11 @@ import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import java.util.function.DoubleBinaryOperator;
import java.util.stream.Collectors;
@@ -127,6 +129,22 @@ public class MixedTensor implements Tensor {
}
@Override
+ public Tensor remove(Set<TensorAddress> addresses) {
+ Tensor.Builder builder = Tensor.Builder.of(type());
+ for (Map.Entry<TensorAddress, Long> entry : index.sparseMap.entrySet()) {
+ TensorAddress sparsePartialAddress = entry.getKey();
+ if ( ! addresses.contains(sparsePartialAddress)) {
+ long offset = entry.getValue();
+ for (int i = 0; i < index.denseSubspaceSize; ++i) {
+ Cell cell = cells.get((int)offset + i);
+ builder.cell(cell.getKey(), cell.getValue());
+ }
+ }
+ }
+ return builder.build();
+ }
+
+ @Override
public int hashCode() { return cells.hashCode(); }
@Override