【问题标题】:How do I check for multiple Strings in an ArrayList at once? [duplicate]如何一次检查 ArrayList 中的多个字符串? [复制]
【发布时间】:2021-06-08 01:36:10
【问题描述】:

如何将 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.(Scanner, ArrayList, etc.) 然后,我检查 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?");
      }
    }
  }
}

【问题讨论】:

  • 查看List 的文档(由ArrayList 扩展)。它有一个 contains 方法,可以完全满足您的需求。

标签: java arraylist console java.util.scanner


【解决方案1】:

List#contains

List 接口提供了contains 方法。引用 Javadoc:

如果此列表包含指定的元素,则返回 true。

定义您的 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 是开发者:假

Epik_1 是 dev: true

【讨论】:

    【解决方案2】:

    您可以使用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?");
          }
        }
      }
    }
    

    【讨论】:

      【解决方案3】:

      您可以使用 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,那么它会检查您的列表并返回您的输出。

      【讨论】:

        猜你喜欢
        • 2019-07-14
        • 2019-08-20
        • 2019-03-03
        • 2015-02-24
        • 2016-12-27
        • 2013-02-11
        • 1970-01-01
        • 1970-01-01
        • 2021-06-18
        相关资源
        最近更新 更多