嗨,感谢您注意到我的问题。我想写一个可以被不同类型数组使用的方法。但我的代码总是这样的:
public int indexOf_1(int[] a,int b){
//Find the first matched result and return, otherwise report -1
int index = -1;
for(int j=0;j<a.length;j++){
if (a[j]==b)
{index=j;}
}
return index;
}
public int indexOfChar_1(char[] a,int b){
//Consider merged to the previous method?
int index = -1;
for(int j=0;j<a.length;j++){
if (a[j]==b)
{index=j;}
}
return index;
}
这似乎是多余的,我对这种代码重复感到非常不舒服。在这种情况下,有没有办法为各种数组编写搜索方法以避免重复?谢谢!
最佳答案
不幸的是,由于数组和 JVM 的工作方式,这无法减少。甚至泛型也无济于事,因为 int[]
在没有显式转换的情况下无法安全地转换为 Object[]
。
这看起来像一个常见的 util 函数。如果您对代码重复不满意,可以考虑使用提供此功能的众多库之一。 Guava 和 Commons-Lang 是一些。
Guava 将它们放在与 primitive type 相关的类中。 Commons-Lang 将它们安排在 ArrayUtils 类中
例如
Bytes.indexOf(byteArray, (byte) 2);
Ints.indexOf(intArray, 22);
ArrayUtils.indexOf(intArray, 6);
关于Java : To write a method that can be applied on any kind of array,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50493361/