Выложу лишь часть кода, который мне не нравится, ибо запрещено выкладывать решение. Вопросы в комментариях.
public class Solution {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        Scanner scanner = new Scanner(System.in);
        for (int i = 0; i < 10; i++) {
            list.add(scanner.nextLine());
        }

/*
 foreach для нахождения наибольшего/наименьшего за пределами цикла создания списка:
1. возможно ли отказаться от foreach? Прошу краткий пример.
2. как внести foreach внутрь цикла создания списка, чтобы на входе отсеивать строки? Все попытки заканчиваются тем,
что я не могу вывести наибольшую/наименьшую строку, а вывожу либо её индекс, либо её длину.
Вероятно, неверно инициализируются переменные max и min.
Где их инициализировать в случае когда foreach внутри цикла создания списка?
*/

        int max = list.get(0).length();
        for (String aList : list) {
            if (aList.length() > max) {
                max = aList.length();
            }
        }
// так же для min

/*
 Вывод первого наибольшего/наименьшего пришлось останавливать break, есть ли другой способ?
*/
        for (String aList : list) {
// тут булево
                System.out.println(aList);
                break;
            }
// тут булево
                System.out.println(aList);
                break;
            }
        }
    }
}