Da es schwierig ist, sich umzudrehen, wenn Sie im Grunde die gesamte Listenerstellung mit Stream schreiben Für meinen Senior ist "Stream eigentlich eine for-Aussage, also eine Verschwendung von Gedächtnis." Ich habe eine Bewertung erhalten, die besagt, dass ich etwas irritiert war, also habe ich es überprüft.
Versuchen Sie es mit einer einfachen Speichermessmethode
DecimalFormat f1 = new DecimalFormat("#,###KB");
DecimalFormat f2 = new DecimalFormat("##.#");
long free = Runtime.getRuntime().freeMemory() / 1024;
long total = Runtime.getRuntime().totalMemory() / 1024;
long max = Runtime.getRuntime().maxMemory() / 1024;
long used = total - free;
double ratio = (used * 100 / (double)total);
String info =
"Java-Speicherinformationen:gesamt=" + f1.format(total) + "、" +
"Menge zu verwenden=" + f1.format(used) + " (" + f2.format(ratio) + "%)、" +
"Maximal verfügbar="+f1.format(max);
System.out.println(info);
Java-Speicherinformationen:gesamt=125,952 KB, Verwendung=1,997KB (1.6%), Maximal verfügbar=1,864,192KB
List<Integer> list = new ArrayList<>();
List<Integer> devided1 = new ArrayList<>();
List<Integer> devided2 = new ArrayList<>();
List<Integer> devided3 = new ArrayList<>();
for(int i = 1; i<=10000 ; i++) {
list.add(i);
}
for(Integer num : list) {
if(num % 3 == 1) {
devided1.add(num);
}
if(num % 3 == 2) {
devided2.add(num);
}
if(num % 3 == 0) {
devided3.add(num);
}
}
Java-Speicherinformationen:gesamt=125,952 KB, Verwendung=2,665KB (2.1%), Maximal verfügbar=1,864,192KB
List<Integer> devided1 = list.stream()
.filter(i -> i%3 ==1)
.collect(Collectors.toList());
List<Integer> devided2 = list.stream()
.filter(i -> i%3 ==2)
.collect(Collectors.toList());
List<Integer> devided3 = list.stream()
.filter(i -> i%3 ==0)
.collect(Collectors.toList());
Java-Speicherinformationen:gesamt=125,952 KB, Verwendung=3,995KB (3.2%), Maximal verfügbar=1,864,192KB
Es tut mir leid, freche Senioren zu sagen. Wenn Sie denselben Vorgang dreimal wiederholen, wird mehr Speicherplatz benötigt. Soweit diese Zahl ersichtlich ist, scheint die Verwendungsmenge von for kleiner zu sein, selbst wenn dieselbe Verarbeitung einmal ausgeführt wird.
Ich habe Zweifel an dem Begriff "echt für Satz" Schließlich ist es nicht immer gut, einen neuen zu verwenden.
Letzteres ist jedoch immer noch lesbar und leicht zu schreiben.
Recommended Posts