Как получить минимум потока значений, закоротив, если встречается минимальное допустимое значениеJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как получить минимум потока значений, закоротив, если встречается минимальное допустимое значение

Сообщение Anonymous »

Следующий код находит минимальное значение из ограниченного количества элементов:

Код: Выделить всё

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;
}
}
Каждый элемент этого потока может иметь одно из пяти значений: 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 с пропуском итераций, если 1 найден.
Как можно написать приведенный выше код Java 7 в потоковом стиле Java 8?

Подробнее здесь: https://stackoverflow.com/questions/404 ... imum-legal
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»