如何一次检查 ArrayList 中的多个字符串?

How do I check for multiple Strings in an ArrayList at once?

如何将 2 个字符串插入同一个变量?我考虑这样做的一种方式是做这样的事情:

static String devs = "Monter123","Epik_1";

那没用。所以我决定使用 ArrayLists:

ArrayList<String> devs = new ArrayList<String>(); // Is there a way to put this on one line?
    admins.add("Monter123");
    admins.add("Epik_1");

所以..我想出了如何将多个字符串输入到 ArrayList 中。现在,我希望能够使用它。首先我导入:

import java.util.*;

获取所有 java.util。(扫描仪、ArrayList 等)然后,我检查 userInput 是否等于任何开发人员:

if(userInput.equals(devs.get(0))||userInput.equals(devs.get(1))){
  System.out.println("You are a dev");
}

正如您在我上面的代码中看到的,如果我决定招募更多开发人员,我将需要继续添加更多行:

|| userInput.equals(...

进入 if 语句。这很不方便。我想知道是否有:

devs.get(all)

事物的类型。

有答案请参考这里:

import java.util.*; 
class test {
  public static void main(String[] args) {
    ArrayList<String> devs = new ArrayList<String>();
    devs.add("Monter123");
    devs.add("Epik_1");
    Scanner userINT = new Scanner(System.in);
    while(true){
      String userInput = userINT.nextLine();
      if (userInput.equals(devs.get(0))){// I want this to check for devs.get(1) too, without the use of || userINT.equals(...!
        System.out.println("good");
      } else {
        System.out.println("bad?");
      }
    }
  }
}

您可以使用 Stream.anyMatch(),如下例所示:

import java.util.*; 
class test {
  public static void main(String[] args) {
    ArrayList<String> devs = new ArrayList<String>();
    devs.add("Monter123");
    devs.add("Epik_1");
    Scanner userINT = new Scanner(System.in);
    while(true){
      String userInput = userINT.nextLine();
      if (devs.stream().anyMatch(s -> userInput.equals(s))){
        System.out.println("good");
      } else {
        System.out.println("bad?");
      }
    }
  }
}

您可以使用 for each 循环来搜索相同的匹配字符串,例如:

Scanner scan = new Scanner(System.in);
List<String> list = new ArrayList<>();
list.add("Monter123");
list.add("Epik_1");

String userInput = scan.nextLine();
for (String string : list){
    System.out.println(string.equals(userInput) ? "Good" : "Bad");
}

如果用户输入 Moniker1,那么它会检查您的列表和 returns 您的输出。

List#contains

List interface offers the contains 方法。引用 Javadoc:

Returns true if this list contains the specified element.

定义您的 List 对象。

List< String > devs = List.of( "Monter123" , "Epik_1" ) ;

询问列表是否有任何项目与您的用户输入相匹配。

String userInput = …
boolean found = devs.contains( userInput ) ;

用法示例。

List< String > devs = List.of( "Monter123" , "Epik_1" ) ;

String userInput1 = "Bob" ;
boolean found1 = devs.contains( userInput1 ) ;

String userInput2 = "Epik_1" ;
boolean found2 = devs.contains( userInput2 ) ;

System.out.println( userInput1 + " is dev: " + found1 ) ;
System.out.println( userInput2 + " is dev: " + found2 ) ;

看到这个code run live at IdeOne.com

Bob is dev: false

Epik_1 is dev: true