Warm tip: This article is reproduced from serverfault.com, please click

java-将输入与ArrayList内容匹配

(java - Matching Input to ArrayList contents)

发布于 2020-11-28 18:24:13

我想遍历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;
            }
        }
Questioner
ASH
Viewed
0
Alex Rudenko 2020-11-29 05:57:21

该代码似乎失败了,因为它想将它们进行比较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;
}