|
23 | 23 | package org.tensorics.core.tensor.lang; |
24 | 24 |
|
25 | 25 | import static com.google.common.base.Preconditions.checkArgument; |
| 26 | +import static com.google.common.collect.ImmutableList.toImmutableList; |
26 | 27 |
|
27 | 28 | import java.util.Arrays; |
28 | 29 | import java.util.Collection; |
29 | 30 | import java.util.HashSet; |
| 31 | +import java.util.List; |
30 | 32 | import java.util.Set; |
31 | 33 |
|
32 | 34 | import org.tensorics.core.tensor.Coordinates; |
33 | 35 | import org.tensorics.core.tensor.ImmutableTensor; |
34 | 36 | import org.tensorics.core.tensor.ImmutableTensor.Builder; |
35 | 37 | import org.tensorics.core.tensor.Position; |
| 38 | +import org.tensorics.core.tensor.Positions; |
36 | 39 | import org.tensorics.core.tensor.Tensor; |
37 | 40 | import org.tensorics.core.tensor.operations.TensorInternals; |
38 | 41 |
|
| 42 | +import com.google.common.collect.ImmutableList; |
| 43 | + |
39 | 44 | /** |
40 | 45 | * Part of the tensoric fluent API which provides methods to describe misc manipulations on a given tensor. |
41 | 46 | * |
@@ -91,6 +96,17 @@ public V get(Object... coordinates) { |
91 | 96 | return tensor.get(coordinates); |
92 | 97 | } |
93 | 98 |
|
| 99 | + public <C> List<V> list(List<C> listCoordinateValues, Position remainingCoordinates) { |
| 100 | + return listCoordinateValues.stream().map(Position::of)// |
| 101 | + .map(p -> Positions.union(remainingCoordinates, p)) // |
| 102 | + .map(p -> get(p))// |
| 103 | + .collect(toImmutableList()); |
| 104 | + } |
| 105 | + |
| 106 | + public <C> List<V> list(List<C> listCoordinateValues, Object ...otherCoordinates) { |
| 107 | + return list(listCoordinateValues, Position.of(otherCoordinates)); |
| 108 | + } |
| 109 | + |
94 | 110 | public Tensor<V> extract(Position position) { |
95 | 111 | return extractTensor(position.coordinates()); |
96 | 112 | } |
|
0 commit comments