【问题标题】:contains() method is not working for Arrays.asList in javacontains() 方法不适用于 java 中的 Arrays.asList
【发布时间】:2017-04-04 16:14:50
【问题描述】:

我有一个字符串对象,看起来像:

String color = "black, pink, blue, yellow";

现在我想把它转换成一个数组并找到一种颜色。像这样的:

boolean check = Arrays.asList(color).contains("pink");

这总是假的。

谁能帮我解决这个问题?

【问题讨论】:

  • 数组中没有String"pink",你是把内容拆分并修剪,还是希望Arrays.asList(color)神奇地将原来的String拆分成一个逻辑数组每种颜色?
  • 你需要拆分字符串,asList 不会这样做。
  • @Teddu 在上述代码中,您无需将color 字符串转换为list。您可以直接使用String 类包含color.contains("pink")

标签: java string list arraylist collections


【解决方案1】:

您的字符串变量color 不是数组,所以首先您需要使用split(String dilemeter) 方法从该字符串变量创建数组,然后从拆分后的字符串创建ArrayList,如下所示:

List<String> arrList = Arrays.asList(color.split(", "));

之后你可以检查arrList是否包含一些元素:

boolean check = arrList.contains("pink");

【讨论】:

    【解决方案2】:

    试试这个代码 sn-p:

    boolean check = Arrays.asList("black", "pink", "blue", "yellow").contains("pink");
    

    我不建议使用 String 来存储多个值。

    【讨论】:

      【解决方案3】:

      您的问题与colorString 而不是array 的事实有关,因此Arrays.asList(color) 将创建一个List,其中仅包含一个元素"black, pink, blue, yellow",这就是它返回@ 的原因987654329@.

      您需要先将其转换为array,然后使用split(String regex) 作为下一个:

      // Here the separator used is a comma followed by a whitespace character
      boolean check = Arrays.asList(color.split(",\\s")).contains("pink")
      

      如果只想知道color是否包含“pink”,也可以考虑使用String#contains(CharSequence s)

      boolean check = color.contains("pink");
      

      【讨论】:

        【解决方案4】:

        你需要 split() 字符串

        【讨论】:

        • 但不仅仅是没有参数split()
        • 确实没有,字符串上没有任何无参数拆分方法。但是其他拆分方法上的 javadoc 会告诉操作员其余的。
        【解决方案5】:

        将颜色拆分为 "," ,将其转换为数组列表并检查是否存在字符串:

            String color = "black, pink, blue, yellow";
            boolean isThere = Arrays.asList(color.split(",")).contains("black");
        
            System.out.println("is black present: " + isThere);
        

        【讨论】:

          【解决方案6】:

          您的颜色变量是一个字符串。当您转换为列表时,它将作为单个字符串插入。您可以检查以下输出

          Arrays.asList(color).size()

          以上将始终返回 1,表示您理解带有逗号的字符串不会被自动拆分并转换为列表。

          您可以在每个 ' 后跟一个空格(如下所示)进行拆分,以获得预期的输出。

          System.out.println(Arrays.asList(color.split(", ")).contains("pink"));

          空格在拆分中很重要,因为您的字符串包含空格。

          【讨论】:

            猜你喜欢
            • 2020-09-25
            • 2016-05-14
            • 2021-04-07
            • 1970-01-01
            • 2012-06-14
            • 1970-01-01
            • 2014-08-20
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多