java - Java : 编写一个可以应用于任何一种数组的方法
问题描述
您好,感谢您注意到我的问题。我想写一个可以被不同类型的数组使用的方法。但我的代码总是这样:
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 将它们放在与原始类型相关的类中。Commons-Lang 将它们排列在ArrayUtils类中
例如
Bytes.indexOf(byteArray, (byte) 2);
Ints.indexOf(intArray, 22);
ArrayUtils.indexOf(intArray, 6);
推荐阅读
- java - 通过 Android Studio 发送蓝牙消息
- python - 交叉引用由 Jupyter 笔记本中 Sphinx 的自动模块指令生成的 Python 函数
- node.js - 关于 ETIMEOUT 的 AD 服务器连接错误 (LDAP)
- firebase - 如果在firebase中达到最大并发调用,它是否会失败额外调用
- python - Conda-Created Python shell 不能使用删除和箭头键
- list - 从 Flutter 中的另一个 StatefulWidget 调用 List 中 StatefulWidgets 的方法
- vhdl - 在 1 个时钟周期内添加 2 个 VHDL 数字的宽度是否有任何限制?
- exception - ArrayFire 的矩阵乘法与整数输入
- virtual-machine - WebAssembly 中基于堆栈的虚拟机在哪里?
- angular - 使用快速 api 时出现 401 Unauthorized erro,这是 api doc 的屏幕截图