代码之家  ›  专栏  ›  技术社区  ›  marionmaiden

将ArrayList转换为对象数组

  •  31
  • marionmaiden  · 技术社区  · 15 年前

    在Java中是否有一个用于将数组列表转换为对象数组的命令。我知道如何将每个对象从arraylist复制到对象数组中,但我想知道是否可以自动完成。

    我想要这样的东西:

    ArrayList<TypeA> a;
    
    // Let's imagine "a" was filled with TypeA objects
    
    TypeA[] array = MagicalCommand(a);
    
    5 回复  |  直到 11 年前
        1
  •  90
  •   Community CDub    8 年前

    有点像标准 Collection.toArray(T[]) 应该做你需要的(注意 ArrayList 工具 Collection ):

    TypeA[] array = a.toArray(new TypeA[a.size()]);
    

    在旁注中,您应该考虑定义 a 类型 List<TypeA> 而不是 ArrayList<TypeA> ,这样可以避免一些可能不适用于应用程序的特定于实现的定义。

    另外,请看 this question 关于使用 a.size() 而不是 0 作为传递给 a.toArray(TypeA[])

        2
  •  9
  •   Shashank T    15 年前

    您可以使用此代码

    ArrayList<TypeA> a = new ArrayList<TypeA>();
    Object[] o = a.toArray();
    

    如果你想让这个对象回到类型A中,只需要用instanceof方法检查它。

        3
  •  7
  •   Mariusz Jamro    12 年前

    对。 ArrayList 有一个 toArray() 方法。

    http://java.sun.com/javase/6/docs/api/java/util/ArrayList.html

        4
  •  2
  •   Mariusz Jamro    12 年前

    将ArrayList转换为对象 数组

    arraylist有一个接受集合的构造函数,因此 成语是:

    List<T> list = new ArrayList<T>(Arrays.asList(array));
    

    它构造由数组创建的列表的副本。

    现在, Arrays.asList(array) 将包装数组,因此对列表进行更改 将影响数组,反之亦然。虽然不能添加或删除

    来自这样一个列表的元素。

        5
  •  1
  •   jweber    15 年前
    TypeA[] array = (TypeA[]) a.toArray();