Я предлагаю вам сначала попытаться разобраться в Java 8 в целом, наиболее важно в вашем случае это будут потоки, лямбды и ссылки на методы.
Вы никогда не должны преобразовывать существующий код в код Java 8 построчно, вы должны извлекать функции и преобразовывать их.
В вашем первом случае я обнаружил следующее:
- Вы хотите добавить элементы входной структуры в выходной список, если они соответствуют некоторому предикату.
Давайте посмотрим, как мы это сделаем, мы можем сделать это следующим образом:
List<Player> playersOfTeam = players.stream()
.filter(player -> player.getTeam().equals(teamName))
.collect(Collectors.toList());
Что вы здесь делаете:
- Превратите свою структуру ввода в поток (здесь я предполагаю, что она имеет тип
Collection<Player>
, теперь у вас есть файл Stream<Player>
.
- Отфильтруйте все нежелательные элементы с помощью a
Predicate<Player>
, сопоставляя каждого игрока с логическим значением true, если оно желательно сохранить.
- Соберите получившиеся элементы в список через a
Collector
, здесь мы можем использовать один из стандартных сборщиков библиотеки, а именно Collectors.toList()
.
Это также включает два других момента:
- Код против интерфейсов, поэтому код против
List<E>
более ArrayList<E>
.
- Используйте алмазный вывод для параметра типа в
new ArrayList<>()
, в конце концов, вы используете Java 8.
А теперь перейдем ко второму пункту:
Вы снова хотите преобразовать что-то из устаревшей Java в Java 8, не глядя на общую картину. На эту часть уже ответил @IanRoberts , хотя я думаю, что вам нужно сделать players.stream().filter(...)...
то, что он предложил.