【问题标题】:How Arrays.asList(...).contains(...) works?Arrays.asList(...).contains(...) 如何工作?
【发布时间】:2012-06-14 08:01:18
【问题描述】:

我有以下代码..

    String[] weekEnds={"0","6"};

    for(int i=0;i<7;i++){

    if(Arrays.asList(weekEnds).contains(i)){

     System.out.println("I am in the array");       
    }    
  }

但它没有进入 if 条件..我不知道我哪里出错了.. 在此先感谢..

【问题讨论】:

  • 因为"0" 的字符串与0 的整数不同。其实(Long) 0L(Integer) 0)(Double) 0.0是不一样的。

标签: java arrays list arraylist


【解决方案1】:

您正在比较字符串和整数。您的数组包含字符串("0""6"),但您将 int 传递给比较。

对于整数,该 int 将是 boxed,但 Integer(1) 不等于 "1"

【讨论】:

    【解决方案2】:

    您正在比较苹果和橙子(在本例中为 Strings 和 Integers)。

    您正在将String 的数组转换为List。然后你用int 值调用contains()。因为该方法将Object 作为参数类型,所以int 被自动装箱为Integer

    为了解决这个问题,写:

    if(Arrays.asList(weekEnds).contains("" + i)) {
    

    【讨论】:

      【解决方案3】:

      您需要有一个 int 数组才能进行这样的比较。

      改变这个:

      String[] weekEnds={"0","6"};
      

      int[] weekEnds = {0,6};
      

      【讨论】:

        【解决方案4】:

        只需更改为Integer[] weekEnds={0,6};,我认为它会起作用。

        【讨论】:

          【解决方案5】:

          要么将if 条件更改为

          if(Arrays.asList(weekEnds).contains(String.valueOf(i))){
          

          或者把你的数组改成

          Integer[] weekEnds={0,6};
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2015-06-09
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-11-30
            • 2015-10-03
            相关资源
            最近更新 更多