Mercurial > dive4elements > river
comparison artifacts/src/main/java/org/dive4elements/river/exports/minfo/BedQualityExporter.java @ 7254:fe32a7f9655e
Reduce usage of careless 'for (int i = 0; i < x.size(); i++)' pattern.
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Sat, 05 Oct 2013 17:52:16 +0200 |
parents | 41567bf1e131 |
children | d72459b90397 |
comparison
equal
deleted
inserted
replaced
7253:90a3bcd8060a | 7254:fe32a7f9655e |
---|---|
13 import java.io.IOException; | 13 import java.io.IOException; |
14 import java.io.OutputStream; | 14 import java.io.OutputStream; |
15 import java.text.DateFormat; | 15 import java.text.DateFormat; |
16 import java.text.NumberFormat; | 16 import java.text.NumberFormat; |
17 import java.util.Arrays; | 17 import java.util.Arrays; |
18 import java.util.LinkedList; | 18 import java.util.ArrayList; |
19 import java.util.List; | 19 import java.util.List; |
20 | 20 |
21 import org.apache.log4j.Logger; | 21 import org.apache.log4j.Logger; |
22 | 22 |
23 import au.com.bytecode.opencsv.CSVWriter; | 23 import au.com.bytecode.opencsv.CSVWriter; |
69 int cols = 1; | 69 int cols = 1; |
70 for (int i = 0; i < results.length; i++) { | 70 for (int i = 0; i < results.length; i++) { |
71 BedDiameterResult[] beds = results[i].getBedResults(); | 71 BedDiameterResult[] beds = results[i].getBedResults(); |
72 for (int j = 0; j < beds.length; j++) { | 72 for (int j = 0; j < beds.length; j++) { |
73 TDoubleArrayList bkms = beds[j].getKms(); | 73 TDoubleArrayList bkms = beds[j].getKms(); |
74 for (int k = 0; k < bkms.size(); k++) { | 74 for (int k = 0, K = bkms.size(); k < K; k++) { |
75 if (!kms.contains(bkms.get(k))) { | 75 double km = bkms.get(k); |
76 kms.add(bkms.get(k)); | 76 if (!kms.contains(km)) { // XXX: O(N^2) |
77 kms.add(km); | |
77 } | 78 } |
78 } | 79 } |
79 } | 80 } |
80 BedloadDiameterResult[] loads = results[i].getBedloadResults(); | 81 BedloadDiameterResult[] loads = results[i].getBedloadResults(); |
81 for (int j = 0; j < loads.length; j++) { | 82 for (int j = 0; j < loads.length; j++) { |
82 TDoubleArrayList lkms = loads[i].getKms(); | 83 TDoubleArrayList lkms = loads[i].getKms(); |
83 for (int k = 0; k < lkms.size(); k++) { | 84 for (int k = 0, L = lkms.size(); k < L; k++) { |
84 if (!kms.contains(lkms.get(k))) { | 85 double km = lkms.get(k); |
85 kms.add(lkms.get(k)); | 86 if (!kms.contains(km)) { // XXX: O(N^2) |
87 kms.add(km); | |
86 } | 88 } |
87 } | 89 } |
88 } | 90 } |
89 cols += beds.length * 2; | 91 cols += beds.length * 2; |
90 cols += loads.length; | 92 cols += loads.length; |
92 cols += 4; | 94 cols += 4; |
93 } | 95 } |
94 } | 96 } |
95 | 97 |
96 kms.sort(); | 98 kms.sort(); |
97 List<double[]> rows = new LinkedList<double[]>(); | 99 List<double[]> rows = new ArrayList<double[]>(kms.size()); |
98 for (int i = 0; i < kms.size(); i++) { | 100 for (int i = 0, K = kms.size(); i < K; i++) { |
99 double[] row = new double[cols]; | 101 double[] row = new double[cols]; |
100 double km = kms.get(i); | 102 double km = kms.get(i); |
101 row[0] = km; | 103 row[0] = km; |
102 for (int j = 0; j < results.length; j++) { | 104 for (int j = 0; j < results.length; j++) { |
103 BedloadDiameterResult[] loads = results[j].getBedloadResults(); | 105 BedloadDiameterResult[] loads = results[j].getBedloadResults(); |
132 } | 134 } |
133 rows.add(row); | 135 rows.add(row); |
134 } | 136 } |
135 for (double[] d : rows) { | 137 for (double[] d : rows) { |
136 logger.debug(Arrays.toString(d)); | 138 logger.debug(Arrays.toString(d)); |
137 List<String> cells = new LinkedList<String>(); | 139 List<String> cells = new ArrayList<String>(d.length); |
138 for (int i = 0; i < d.length; i++) { | 140 for (int i = 0; i < d.length; i++) { |
139 if (!Double.isNaN(d[i])) { | 141 if (!Double.isNaN(d[i])) { |
140 NumberFormat nf = Formatter.getFormatter(context, 1, 3); | 142 NumberFormat nf = Formatter.getFormatter(context, 1, 3); |
141 cells.add(nf.format(d[i])); | 143 cells.add(nf.format(d[i])); |
142 } | 144 } |
172 } | 174 } |
173 | 175 |
174 protected void writeCSVHeader(CSVWriter writer) { | 176 protected void writeCSVHeader(CSVWriter writer) { |
175 logger.debug("writeCSVHeader()"); | 177 logger.debug("writeCSVHeader()"); |
176 | 178 |
177 List<String> header = new LinkedList<String>(); | 179 List<String> header = new ArrayList<String>(); |
178 if (results != null) { | 180 if (results != null) { |
179 header.add(msg(CSV_HEADER_KM, "km")); | 181 header.add(msg(CSV_HEADER_KM, "km")); |
180 for (int i = 0; i < results.length; i++) { | 182 for (int i = 0; i < results.length; i++) { |
181 DateFormat df = Formatter.getDateFormatter(context.getMeta(), "dd.MM.yyyy"); | 183 DateFormat df = Formatter.getDateFormatter(context.getMeta(), "dd.MM.yyyy"); |
182 String d1 = df.format(results[i].getDateRange().getFrom()); | 184 String d1 = df.format(results[i].getDateRange().getFrom()); |