Avoid performance degradation of indexed access when using a linked list.
Thanks to Artavazd Balaian.
Closes #134.
diff --git a/src/main/java/org/apache/commons/math4/distribution/EnumeratedDistribution.java b/src/main/java/org/apache/commons/math4/distribution/EnumeratedDistribution.java
index 5b1cd30..27f53bd 100644
--- a/src/main/java/org/apache/commons/math4/distribution/EnumeratedDistribution.java
+++ b/src/main/java/org/apache/commons/math4/distribution/EnumeratedDistribution.java
@@ -86,9 +86,8 @@
NotANumberException {
singletons = new ArrayList<>(pmf.size());
final double[] probs = new double[pmf.size()];
-
- for (int i = 0; i < pmf.size(); i++) {
- final Pair<T, Double> sample = pmf.get(i);
+ int count = 0;
+ for (Pair<T, Double> sample : pmf) {
singletons.add(sample.getKey());
final double p = sample.getValue();
if (p < 0) {
@@ -100,7 +99,7 @@
if (Double.isNaN(p)) {
throw new NotANumberException();
}
- probs[i] = p;
+ probs[count++] = p;
}
probabilities = MathArrays.normalizeArray(probs, 1.0);