将输入匹配到 ArrayList 内容

Matching Input to ArrayList contents

我正在尝试遍历包含足球俱乐部对象的 ArrayList。我正在尝试检索名称并与用户输入进行比较以检查它是否是一个有效的团队。检查时,它会检查第一个输入(team1)并设法找出它是否在 ArrayList 中,但对于第二个输入则不在。即使 (team2) 作为一个有效的团队存在于 ArrayList 中,它仍然说它不存在

 String team1 = userInput.nextLine();

 String team2 = userInput.nextLine();

for(int i =0; i < addStats.size(); i++)
        {
            if(addStats.get(i).getClubName().equals(team1)) {
                for(FootballClub clubs: addStats)
                {
                    if(clubs.getClubName().equals(team2))
                    {
                        break;
                    }
                    else{
                        System.out.println(team2 + " is not a valid team");
                        return;
                    }
                }
                break;
            } else {
                System.out.println(addStats.get(i).getClubName());
                System.out.println(team1 + " is not a valid team");
                return;
            }
        }

似乎代码失败了,因为它试图比较相同的 FootballClub 以匹配 team1team2 这不可能是真的,除非 team1 相等至 team2.

如果任务是验证 FootballClub 个实例列表是否包含具有给定名称的俱乐部,则应实现一个单独的简单方法:

static boolean clubListHasTeam(List<FootballClub> clubs, String team) {
    boolean found = false;

    for (FootballClub club : clubs) {
        if (club.getClubName().equals(team)) {
            found = true;
            break;
        }
    }
    return found;
}

使用Java Stream API有助于使该方法更加简洁:

static boolean clubListHasTeam(List<FootballClub> clubs, String team) {
    return clubs.stream()
                .map(FootballClub::getClubName) // stream of the club names
                .anyMatch(team::equals);  // any club name matched the input name
}

用法:

String team1 = userInput.nextLine();
String team2 = userInput.nextLine();
boolean valid = true;

if (!clubListHasTeam(addStats, team1)) {
    System.out.println(team1 + " is invalid");
    valid = false;
}
if (!clubListHasTeam(addStats, team2)) {
    System.out.println(team2 + " is invalid");
    valid = false;
}