首页 > 解决方案 > 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;
}

这似乎是多余的,我对这种代码重复完全不满意。有没有办法为各种数组编写搜索方法以避免在这种情况下重复?谢谢!

标签: javaarrays

解决方案


不幸的是,由于数组和 JVM 的工作方式,这无法减少。甚至泛型也无济于事,因为没有显式转换int[]就无法安全Object[]地转换为。

这看起来像一个常见的 util 函数。如果您对代码重复不满意,可以考虑使用提供此功能的众多库之一。Guava 和 Commons-Lang 是少数。

Guava 将它们放在与原始类型相关的类中。Commons-Lang 将它们排列在ArrayUtils类中

例如

Bytes.indexOf(byteArray, (byte) 2);
Ints.indexOf(intArray, 22);
ArrayUtils.indexOf(intArray, 6);

推荐阅读