比较数组中的元素

时间:2019-11-06 00:24:07

标签: java

我正在创建一个项目,用户在其中输入多个运动队的名称。不允许用户两次输入团队的相同名称。我不知道如何比较数组的元素。我尝试使用带有equals的while循环,但我认为这不是正确的方法。

for(int i = 0; i<tabEquipe.length;i++){ // tabEquipe is the table content of the teams that the user enters.
        System.out.println("Entrez les noms des equipes: "); // Asks user to enter team names.
        rep2 = a.nextLine();
       tabEquipe[i] = rep2;
       while(tabEquipe[i].equals(tabEquipe[i])){

       }
    }

2 个答案:

答案 0 :(得分:1)

这令人困惑,所以我假设您已经有一个要添加的新用户,并且看来您可以将用户与equals进行比较。如果有一个新用户newUser,则可能是这样的:

boolean found = false;
for(int i = 0; i < tabEquipe.length; i++){ 
   if (tabEquipe[i].equals(newUser))
   {
      found = true;
      break; 
   }
}

或更短:

boolean found = Arrays.asList(tabEquipe).contains(newUser);

答案 1 :(得分:0)

您可以使用HashSet来存储团队的名称,这样可以非常有效地检查是否已经使用了新名称。例如:

...

Set<String> teamNamesSet = new HashSet<>();

for (int i = 0; i < teamNames.length; i++) {
 ...

 // Checking if a team name was already used
 while (teamNamesSet.contains(name)) {
  // Show some error message, request input again, etc.
 }

 // Adding a new team name to the set
 teamNamesSet.add(name);

 // Adding a new team name also to the array you need
 teamNames[i] = name;
}

此方法的最大优势在于,检查名称是否在HashSet中已经花费了恒定的时间(O(1))。使用for循环进行检查具有线性复杂度(O(n))。