使用Generics计算任何数组中元素的出现次数 类型。
计数方法的签名如下:
public static <T> int count(T[] array, T item)
答案 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;
}