/** * Create a new CompositeMap which composites all of the Map instances in the * argument. It copies the argument array, it does not use it directly. * * @param composite Maps to be composited * @param mutator MapMutator to be used for mutation operations */ @SuppressWarnings("unchecked") public CompositeMap(final Map<K, V>[] composite, final MapMutator<K, V> mutator) { this.mutator = mutator; this.composite = new Map[0]; for (int i = composite.length - 1; i >= 0; --i) { this.addComposited(composite[i]); } }
private synchronized CompositeMap<IOption, Object> compositeFrom(Stream<Map<IOption, Object>> stream) { List<Map<IOption, Object>> list = stream.collect(Collectors.toList()); CompositeMap<IOption, Object> map = new CompositeMap<>(); map.setMutator(new NoOpMapMutator()); for (ListIterator<Map<IOption, Object>> iter = list.listIterator(list.size()); iter.hasPrevious();) { map.addComposited(iter.previous()); } return map; }