例如有ARA代碼用於從元件的限制量FINDE最小:java的8個流FINDE MIN/MAX限制
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;
}
}
完全以只存在5號:1,2,3,4,Integer.MAX_VALUE的。當我們面對1時,可以跳過未來的迭代並返回結果。
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;
}
}
於是就如果我們的字符串將警惕大,那麼我們就可以顯著下跌性能通過使用Java 8個流而不是Java 7風格的跳躍iterrations如果1中找到。
您能否介紹一下如何在java 8流風格中編寫上述Java 7代碼?
的可能的複製[上的流如何短路一個減少()操作?](http://stackoverflow.com/questions/32495069/how-to-short-circuit-a-reduce-流操作) – user140547
[通過謂詞限制流]可能的重複(http://stackoverflow.com/questions/20746429/limit-a-stream-by-a-predicate) – the8472