2

我有一种将数组转换为 ArrayList 的方法,如下所示:

    public static <T> ArrayList<T> getArrayList(T[] a){
        ArrayList<T> retList = new ArrayList<T>();
        for (T i : a){ 
            retList.add(i); 
        }
        return retList;
    }

这适用于对象数组,例如:

    String[] arr = {"String","'nother string","etc"};
    ArrayList<String> stringList = initArrayList(arr);

但不是原始数组:

    int[] arr2 = {1,2,3};
    ArrayList<Integer> intList = initArrayList(arr2); //Compiler is insulted by this.

我想如果我想让该方法工作,我必须将数组转换为整数数组,但是有没有办法让该方法更聪明地处理它的处理方式?

Java 教程站点具有以下内容:

    static <T> void fromArrayToCollection(T[] a, Collection<T> c) {
        for (T o : a) {
            c.add(o); // Correct
        }
    }

这会起作用,但我想要创建 ArrayList 的方法。

另外,这只是我自己的娱乐,所以Collection的类型并不重要,我在编写方法时只是使用了ArrayList。

谢谢

4

2 回答 2

2

有现成可用的方法java.util.Arrays.asListcom.google.common.primitives.Ints.asList.

于 2013-03-19T23:58:41.087 回答
2

没有可以与原语一起使用的泛型方法,因为原语不能是泛型类型。最接近纯 Java 的方法是重载getArrayList一个int[]...

public static ArrayList<Integer> getArrayList(int[] a){
    ArrayList<Integer> retList = new ArrayList<Integer>();
    for (int i : a){ 
        retList.add(i); 
    }
    return retList;
}

这将为您装箱int。它不是通用的,您需要为每个原始数组类型重新重载,但这是我能想到的最接近的解决方案。

于 2013-03-19T23:59:19.253 回答