关于泛型的Java程序

时间:2017-02-17 14:49:43

标签: java arrays generics

使用Generics计算任何数组中元素的出现次数 类型。

计数方法的签名如下:

public static <T> int count(T[] array, T item)

1 个答案:

答案 0 :(得分:2)

使用java 8&amp;对象,没有实际需要泛型:

public static int count(Object[] array, Object item){
    if(item == null){
        return Math.toIntExact(Arrays.asList(array).stream().filter(e -> e == null).count());
    }
    return Math.toIntExact(Arrays.asList(array).stream().filter(e -> item.equals(e)).count());
}

编辑:如果你真的想要泛型:

public static <T> int count(T[] array, T item){
    if(item == null){
        return Math.toIntExact(Arrays.asList(array).stream().filter(e -> e == null).count());
    }
    return Math.toIntExact(Arrays.asList(array).stream().filter(e -> item.equals(e)).count());
}

再次编辑: 如果jdk 8对你来说太过分了:

public static <T> int count(T[] array, T item){
    boolean isNull = item == null;
    int c = 0;
    for(int i =0; i < array.length; i++ ){
        if(isNull && array[i] == null){
            c++;
        } else if(item.equals(array[i])) {
            c++;
        }
    }
    return c;
}