Java 8 поток находит ограничение MIN/MAXJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Java 8 поток находит ограничение MIN/MAX

Сообщение 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;
}
}
Всего существует только 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 с пропуском итераций, если 1 найден.

Не могли бы вы объяснить, как написать приведенный выше код Java 7 в потоковом стиле Java 8?

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

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

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

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

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

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