Как я могу обернуть максимальное значение моего алгоритма в функцию?

Это из-за этой строки:

printf ("Hi %s,</br />", $name);

Вы не должны печатать / эхо ничего, прежде чем отправлять заголовки.

1
задан GBlodgett 17 January 2019 в 00:26
поделиться

2 ответа

Вы можете использовать потоки, которые сделают это за вас.

Например:

 maxLengthNickname = mentorList
                .stream()
                .mapToInt(mentor -> mentor.getNickname().getLength())
                .max();

Однако недостатком является то, что как в вашем примере, так и в этом случае вы будете повторять один и тот же цикл несколько раз.

Возможно, имеет больше смысла сделать один цикл и сделать их все внутри.

0
ответ дан jbx 17 January 2019 в 00:26
поделиться

Я бы обобщил это с помощью такого метода, как:

public <T> int max(List<T> list, ToIntFunction<T> toInt) {
    int max = toInt.applyAsInt(list.get(0));
    for(T t : list) {
        if(toInt.applyAsInt(t) > max) {
            max = toInt.applyAsInt(t);
        }
    }
    return max;
}

И затем каждый раз, когда вам нужно вызвать его (например, с помощью String), вы можете сделать:

List<String> list = Arrays.asList("Hello", "one", "four", "biggest");
ToIntFunction<String> length = (str) -> str.length();
int biggest = max(list, length);
[ 119] Или передайте его напрямую через ссылку на метод:

int biggest = max(list, String::length);

, который вернет 7

Или Java 8+, который вы можете сделать:

public <T> int max(List<T> list, ToIntFunction<T> toInt) {
     return list.stream().mapToInt(toInt).max().orElse(Integer.MIN_VALUE);
}

, который будет удерживать вас от необходимости писать один и тот же цикл снова и снова


Документация для ToIntFunction

0
ответ дан GBlodgett 17 January 2019 в 00:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: