我想知道从ArrayList转换为Array是否安全/可取?我有一个文本文件,每行一个字符串:
1236
1233
4566
4568
....
Run Code Online (Sandbox Code Playgroud)
我想将它们读入数组列表然后将其转换为数组.这样做是否明智/合法?
谢谢
一个困难的问题,我接近放弃所有的希望.我正在尝试创建一个函数,但是在ArrayList.toArray()返回我想要的类型时遇到了问题.
这是演示我的问题的最小例子:
public static <T> T[] test(T one, T two) {
java.util.List<T> list = new ArrayList<T>();
list.add(one);
list.add(two);
return (T[]) list.toArray();
}
Run Code Online (Sandbox Code Playgroud)
通常我可以使用表单,(T[]) list.toArray(new T[0])但有两个额外的困难:
(T[]) myObjectArray给出一个ClassCastExceptionnew T[].我也不能在其中一个元素上使用克隆ArrayList或尝试获得它的类.我一直在尝试使用以下调用获取一些信息:
public static void main(String[] args) {
System.out.println(test("onestring", "twostrings"));
}
Run Code Online (Sandbox Code Playgroud)
结果[Ljava.lang.Object;@3e25a5表明返回的类型转换无效.奇怪的是以下几点:
public static void main(String[] args) {
System.out.println(test("onestring", "twostrings").getClass());
}
Run Code Online (Sandbox Code Playgroud)
回来:
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
at patchLinker.Utilities.main(Utilities.java:286)
Run Code Online (Sandbox Code Playgroud)
所以我最好的猜测是它认为它是一个明智的String数组标签,但内部是一个Object数组,任何访问尝试都会带来不一致性.
如果有人能找到解决这个问题的方法(因为我拒绝了两个正常的解决方法),我会非常感激.
K.Barad JDK1.6 …
我正在使用泛型方法进行一些测试,我想在下面转换这两个方法(convertFloatListToArray和convertShortListToArray)(convertListToArray):
public class Helper{
public static float[] convertFloatListToArray(List<Float> list){
float[] array = new float[list.size()];
for(int i = 0; i<list.size(); i++){
array[i] = list.get(i);
}
return array;
}
public static short[] convertShortListToArray(List<Short> list){
short[] array = new short[list.size()];
for(int i = 0; i<list.size(); i++){
array[i] = list.get(i);
}
return array;
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我尝试使用泛型时,如下所示,我有一些错误:
public class Helper{
public static <T, E> T convertListToArray(List<E> list){
T array = new T[list.size()];
for(int i = 0; i<list.size(); i++){
array[i] = list.get(i);
}
return array;
} …Run Code Online (Sandbox Code Playgroud)