代码之家  ›  专栏  ›  技术社区  ›  Dori

Arrays.contains(int)错误

  •  3
  • Dori  · 技术社区  · 16 年前

    我能问一下为什么下面的输出是假的吗?

    import java.util.Arrays;
    
    
    public class Test2 {
    
        public static void main(String[] args) {
            new Test2();
        }
    
        private final int[] VOWEL_POS = {0,4,8,14,20};
    
        Test2(){
            if(Arrays.asList(VOWEL_POS).contains(0)){
                System.out.print("TRUE");
            }else{
                System.out.print("FALSE");
            }
    
        }
    
    }
    

    4 回复  |  直到 16 年前
        1
  •  8
  •   Bozho    16 年前

    这个 asList List<int[]> ,这不是你所期望的。

    原因是你不能 List<int> . 为了达到你想要的,做一个数组 Integer - Integer[]

    Apache commons lang拥有 ArrayUtils 为此:

    if(Arrays.asList(ArrayUtils.toObject(VOWEL_POS)).contains(0))
    

    或者先做阵列 整数[]

        2
  •  2
  •   Noel M    16 年前

    Arrays.asList 返回泛型类型。 int 是基元类型。

    将数组的类型从 内景 Integer :

    private final Integer[] VOWEL_POS = {0,4,8,14,20};
    
        3
  •  2
  •   Robert Petermeier    16 年前

    Arrays.asList(VOWEL_POS) 构造 List<int[]> 而不是一个 List<Integer> List<int> 在Java中(或任何其他原语类型)。

    把你的定义改成 private final Integer[] VOWEL_POS = {0,4,8,1,20}; 它将成为

        4
  •  1
  •   sje397    16 年前

    Som信息 here

    我认为问题是这个列表只包含一个项目,实际上是一个整数数组。

    因为int是一个基本类型,所以您不是在调用asList(Object[])方法,而是在调用varargs asList(T。。。a) 方法。