Interface IMultiDimensionalReadOnlyList<TItem>
- 
- Type Parameters:
 TItem- Type of the items in the list.
- All Superinterfaces:
 Serializable
public interface IMultiDimensionalReadOnlyList<TItem> extends Serializable
Represents a nested list where items can be associated with multi indices, similar to a multidimensional array.- Since:
 - 8.0.0
 - Author:
 - XIMA MEDIA GmbH
 
 
- 
- 
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description List<TItem>getAllFlat(int[] index)Finds all values starting at the given index, similarly togetAll(), but flattened into a single list.<TTarget> ObjectgetAllNested(int[] index, Function<TItem,TTarget> mapper)Finds all values, starting at the index.intgetChildCount(int[] index)list.setValue(new int[] {0, 0}, "x") list.setValue(new int[] {0, 1}, "y") list.getSize(new int[] {}); // => 1 list.getSize(new int[] {0}); // => 2 list.getSize(new int[] {0, 0}); // => 0 list.getSize(new int[] {0, 1}); // => 0TItemgetLast()intgetMaxIndexLength()list.setValue(new int[] {0}, "w") list.setValue(new int[] {0, 0}, "x") list.setValue(new int[] {0, 1}, "y") list.setValue(new int[] {5, 2, 9, 4}, "z") list.getMaxIndexLength(); // => 4intgetMinIndexLength()list.setValue(new int[] {0}, "w") list.setValue(new int[] {0, 0}, "x") list.setValue(new int[] {0, 1}, "y") list.setValue(new int[] {5, 2, 9, 4}, "z") list.getMinIndexLength(); // => 1TItemgetValue(int[] index)list.setValue(new int[] {0}, "x") list.setValue(new int[] {0, 0}, "y") list.setValue(new int[] {0, 2}, "z") list.setValue(new int[] {2}, "a") list.getValue(new int[] {}); // => null list.getValue(new int[] {0}); // => "x" list.getValue(new int[] {0, 0}); // => "y" list.getValue(new int[] {0, 1}); // => null list.getValue(new int[] {0, 2}); // => "z" list.getValue(new int[] {1}); // => null list.getValue(new int[] {2}); // => "a" list.getValue(new int[] {0, 0, 0}); // => null list.getValue(new int[] {0, 0, 9}); // => nullbooleanhasValue(int[] index)list.setValue(new int[] {0}, "x") list.setValue(new int[] {0, 0}, "y") list.setValue(new int[] {0, 2}, "z") list.setValue(new int[] {2}, null) list.setValue(new int[] {3}, "a") list.hasValue(new int[] {}); // => false list.hasValue(new int[] {0}); // => true list.hasValue(new int[] {0, 0}); // => true list.hasValue(new int[] {0, 1}); // => false list.hasValue(new int[] {0, 2}); // => true list.hasValue(new int[] {1}); // => false list.hasValue(new int[] {2}); // => true list.hasValue(new int[] {3}); // => true list.hasValue(new int[] {0,0,0}); // => falseIMultiDimensionalReadOnlyList<TItem>immutableCopy()intsize()list.setValue(new int[] {0}, "w") list.setValue(new int[] {0, 0}, "x") list.setValue(new int[] {0, 1}, "y") list.setValue(new int[] {5, 2, 9, 4}, "z") list.getSize(}); // => 4 
 - 
 
- 
- 
Method Detail
- 
getAllFlat
@Nonnull List<TItem> getAllFlat(@Nonnull int[] index)
Finds all values starting at the given index, similarly togetAll(), but flattened into a single list.When the index has more elements than the longest index for which a value exists, the given index is capped to the length of that longest index.
list.setValue(new int[] {0, 0}, "x1") list.setValue(new int[] {0, 1}, "y1") list.setValue(new int[] {1, 0}, "x2") list.setValue(new int[] {1, 1}, "y2") list.getAllFlat(new int[] {0, 0}); // => List("x1") list.getAllFlat(new int[] {0, 1}); // => List("y1") list.getAllFlat(new int[] {0}); // => List("x1", "y1") list.getAllFlat(new int[] {1}); // => List("x2", "y2") list.getAllFlat(new int[] {}); // => List("x1", "y1", "x2", "y2") list.getAllFlat(new int[] {0, 0, 0}); // => List("x1") list.getAllFlat(new int[] {0, 0, 2}); // => List("x1") list.getAllFlat(new int[] {0, 0, 99}); // => List("x1") list.setValue(new int[] {0, 0, 2}, "002") list.getAllFlat(new int[] {0, 0, 0}); // => List() list.getAllFlat(new int[] {0, 0, 2}); // => List("002") list.getAllFlat(new int[] {0, 0, 99}); // => List()- Parameters:
 index- Multidimensional index at which to get the values.- Returns:
 - A list with all mapped values as a non-nested list, starting at the given index.
 
 
- 
getAllNested
@Nullable <TTarget> Object getAllNested(@Nonnull int[] index, @Nonnull Function<TItem,TTarget> mapper)
Finds all values, starting at the index. When there are no child values at the given index, the value itself is returned. Otherwise, a nested list with all child values, grand child values etc. is returned.When the index has more elements than the longest index for which a value exists, the given index is capped to the length of that longest index.
list.setValue(new int[] {0, 0}, "#x1") list.setValue(new int[] {0, 1}, "#y1") list.setValue(new int[] {1, 0}, "#x2") list.setValue(new int[] {1, 1}, "#y2") list.getAllNested(new int[] {0, 0}, x -> x.substring(1)); // => "x1" list.getAllNested(new int[] {0, 1}, x -> x.substring(1)); // => "y1" list.getAllNested(new int[] {0}, x -> x.substring(1)); // => List("x1", "y1") list.getAllNested(new int[] {1}, x -> x.substring(1)); // => List("x2", "y2") list.getAllNested(new int[] {}, x -> x.substring(1)); // => List(List("x1", "y1"), List("x2", "y2")) list.getAllNested(new int[] {0, 0, 0}, x -> x.substring(1)); // => "x1" list.getAllNested(new int[] {0, 0, 2}, x -> x.substring(1)); // => "x1" list.getAllNested(new int[] {0, 0, 99}, x -> x.substring(1)); // => "x1" list.setValue(new int[] {0, 0, 2}, "#002") list.getAllNested(new int[] {0, 0, 0}, x -> x.substring(1)); // => null list.getAllNested(new int[] {0, 0, 2}, x -> x.substring(1)); // => "002" list.getAllNested(new int[] {0, 0, 99}, x -> x.substring(1)); // => null- Type Parameters:
 TTarget- Type of the mapped items.- Parameters:
 index- Index to access.mapper- Maps each item to the target value.- Returns:
 - Either the mapped 
getValue(index)at the given index when it is a leaf node (does not have children, i.e.getSize(index)== 0), or a list of all mapped values at the given index otherwise. The list may be nested. 
 
- 
getChildCount
int getChildCount(@Nonnull int[] index)list.setValue(new int[] {0, 0}, "x") list.setValue(new int[] {0, 1}, "y") list.getSize(new int[] {}); // => 1 list.getSize(new int[] {0}); // => 2 list.getSize(new int[] {0, 0}); // => 0 list.getSize(new int[] {0, 1}); // => 0- Parameters:
 index- Multidimensional index at which check the size.- Returns:
 - The number of children at the given index, or 
0when the index is at a leaf position. 
 
- 
getLast
@Nullable TItem getLast()
- Returns:
 - The last item in the multidimensional list.
 
 
- 
getMaxIndexLength
int getMaxIndexLength()
list.setValue(new int[] {0}, "w") list.setValue(new int[] {0, 0}, "x") list.setValue(new int[] {0, 1}, "y") list.setValue(new int[] {5, 2, 9, 4}, "z") list.getMaxIndexLength(); // => 4- Returns:
 - The length of the longest multi index for which a value exists. 
0if this list is empty. 
 
- 
getMinIndexLength
int getMinIndexLength()
list.setValue(new int[] {0}, "w") list.setValue(new int[] {0, 0}, "x") list.setValue(new int[] {0, 1}, "y") list.setValue(new int[] {5, 2, 9, 4}, "z") list.getMinIndexLength(); // => 1- Returns:
 - The length of the smaller multi index for which a value exists. 
0if this list is empty. 
 
- 
getValue
@Nullable TItem getValue(@Nonnull int[] index)
list.setValue(new int[] {0}, "x") list.setValue(new int[] {0, 0}, "y") list.setValue(new int[] {0, 2}, "z") list.setValue(new int[] {2}, "a") list.getValue(new int[] {}); // => null list.getValue(new int[] {0}); // => "x" list.getValue(new int[] {0, 0}); // => "y" list.getValue(new int[] {0, 1}); // => null list.getValue(new int[] {0, 2}); // => "z" list.getValue(new int[] {1}); // => null list.getValue(new int[] {2}); // => "a" list.getValue(new int[] {0, 0, 0}); // => null list.getValue(new int[] {0, 0, 9}); // => null- Parameters:
 index- Multidimensional index at which to get the value.- Returns:
 - Gets the value that was set for the given nested index, or 
nullif no value was set yet. 
 
- 
hasValue
boolean hasValue(@Nonnull int[] index)list.setValue(new int[] {0}, "x") list.setValue(new int[] {0, 0}, "y") list.setValue(new int[] {0, 2}, "z") list.setValue(new int[] {2}, null) list.setValue(new int[] {3}, "a") list.hasValue(new int[] {}); // => false list.hasValue(new int[] {0}); // => true list.hasValue(new int[] {0, 0}); // => true list.hasValue(new int[] {0, 1}); // => false list.hasValue(new int[] {0, 2}); // => true list.hasValue(new int[] {1}); // => false list.hasValue(new int[] {2}); // => true list.hasValue(new int[] {3}); // => true list.hasValue(new int[] {0,0,0}); // => false- Parameters:
 index- Multidimensional index at which to check.- Returns:
 truewhen a value exists for the given index.
 
- 
immutableCopy
IMultiDimensionalReadOnlyList<TItem> immutableCopy()
- Returns:
 - A copy of this list that cannot be mutated.
 
 
- 
size
int size()
list.setValue(new int[] {0}, "w") list.setValue(new int[] {0, 0}, "x") list.setValue(new int[] {0, 1}, "y") list.setValue(new int[] {5, 2, 9, 4}, "z") list.getSize(}); // => 4- Returns:
 - The total number of values at any index.
 
 
 - 
 
 -