Java 8 stream finde MIN/MAX restrictionJava

Java-Forum
Guest
 Java 8 stream finde MIN/MAX restriction

Post by Guest »

Zum Beispiel gibt es Code zum Finden des Minimums aus einer begrenzten Anzahl von Elementen:

Code: Select all

public int min(String s) {
return s.chars().map(this::mapToFactor).min().getAsInt();
}

private int mapToFactor(int ch) {
switch(ch) {
case 'A': return 1;
case 'C': return 2;
case 'G': return 3;
case 'T': return 4;
default: return Integer.MAX_VALUE;
}
}
Insgesamt existieren nur 5 Zahlen: 1,2,3,4,Integer.MAX_VALUE. Wenn wir mit 1 konfrontiert sind, können wir zukünftige Iterationen überspringen und das Ergebnis zurückgeben.

Code: Select all

public int min(String s) {
int min = Integer.MAX_VALUE;
for (Character ch : s.toCharArray()) {
int current = mapToFactor(ch);
if(current == 1) {
//How  I can implement this in Java 8 stream style?
return 1;
}
if (current < min) {
min = current;
}
return min;
}
}
Wenn unser String also sehr groß wird, können wir die Leistung erheblich verringern, indem wir den Java 8-Stream anstelle des Java 7-Stils verwenden und Iterationen überspringen, wenn 1 gefunden wird.

Könnten Sie bitte erklären, wie man den oben genannten Java 7-Code im Java 8-Stream-Stil schreibt?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post