diff --git a/src/main/java/org/orekit/utils/DoubleArrayDictionary.java b/src/main/java/org/orekit/utils/DoubleArrayDictionary.java index 0d75f26c4b18bd0e0e76dcd2cceb2c90d556a987..e6f3e71d1606a693d7a1bd27708bfcd14ad464bf 100644 --- a/src/main/java/org/orekit/utils/DoubleArrayDictionary.java +++ b/src/main/java/org/orekit/utils/DoubleArrayDictionary.java @@ -63,8 +63,10 @@ public class DoubleArrayDictionary implements Serializable { * @param dictionary dictionary to use for initializing entries */ public DoubleArrayDictionary(final DoubleArrayDictionary dictionary) { - this(DEFAULT_INITIAL_CAPACITY + dictionary.data.size()); - for (final Entry entry : dictionary.data) { + // take care to call dictionary.getData() and not use dictionary.data, + // otherwise we get an empty dictionary when using a DoubleArrayDictionary.view + this(DEFAULT_INITIAL_CAPACITY + dictionary.getData().size()); + for (final Entry entry : dictionary.getData()) { // we don't call put(key, value) to avoid the overhead of the unneeded call to remove(key) data.add(new Entry(entry.getKey(), entry.getValue())); } diff --git a/src/main/java/org/orekit/utils/FieldArrayDictionary.java b/src/main/java/org/orekit/utils/FieldArrayDictionary.java index b59c747bce4e455cf52b3d12967ea3fc423f162b..3f585417f421bbeeaf86d81de54ed5e7f51ff36e 100644 --- a/src/main/java/org/orekit/utils/FieldArrayDictionary.java +++ b/src/main/java/org/orekit/utils/FieldArrayDictionary.java @@ -70,8 +70,10 @@ public class FieldArrayDictionary<T extends CalculusFieldElement<T>> { * @param dictionary dictionary to use for initializing entries */ public FieldArrayDictionary(final FieldArrayDictionary<T> dictionary) { - this(dictionary.getField(), DEFAULT_INITIAL_CAPACITY + dictionary.data.size()); - for (final Entry entry : dictionary.data) { + // take care to call dictionary.getData() and not use dictionary.data, + // otherwise we get an empty dictionary when using a FieldArrayDictionary.view + this(dictionary.getField(), DEFAULT_INITIAL_CAPACITY + dictionary.getData().size()); + for (final Entry entry : dictionary.getData()) { // we don't call put(key, value) to avoid the overhead of the unneeded call to remove(key) data.add(new Entry(entry.getKey(), entry.getValue())); }