我有一个方法将数组转换为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.
我想我必须将数组转换为Integer数组,如果我希望该方法有效,但是有没有办法让这个方法更巧妙地处理它的处理方式呢?
Java教程网站包含以下内容:
static <T> void fromArrayToCollection(T[] a, Collection<T> c) {
for (T o : a) {
c.add(o); // Correct
}
}
哪个会起作用,但我想要创建ArrayList的方法。
另外,这只是为了我自己的娱乐,所以Collection的类型并不重要,我在编写方法时只使用了ArrayList。
由于
答案 0 :(得分: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
打包。它不是通用的,你需要为每个原始数组类型添加一个新的重载,但这是我能想到的最接近的解决方案。
答案 1 :(得分:1)
准备使用方法java.util.Arrays.asList
和com.google.common.primitives.Ints.asList
。