相关疑难解决方法(0)

从Arraylist到Array

我想知道从ArrayList转换为Array是否安全/可取?我有一个文本文件,每行一个字符串:

1236
1233
4566
4568
....
Run Code Online (Sandbox Code Playgroud)

我想将它们读入数组列表然后将其转换为数组.这样做是否明智/合法?

谢谢

java arraylist

106
推荐指数
3
解决办法
23万
查看次数

使用Generic Arrays的ArrayList转换ArrayList.toArray()

一个困难的问题,我接近放弃所有的希望.我正在尝试创建一个函数,但是在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])但有两个额外的困难:

  1. 由于协方差规则我不能对数组进行类型转换,(T[]) myObjectArray给出一个ClassCastException
  2. 您无法创建泛型类型的新实例,这意味着我无法实例new 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 …

java arrays generics casting arraylist

9
推荐指数
1
解决办法
4万
查看次数

如何使用泛型方法将List <T>转换为Array t [](对于基本类型)?

我正在使用泛型方法进行一些测试,我想在下面转换这两个方法(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)

java arrays generics collections generic-method

3
推荐指数
1
解决办法
1813
查看次数