将ArrayList转换为对象数组

时间:2010-04-30 14:47:48

标签: java arrays arraylist

java中是否有用于将ArrayList转换为对象数组的命令。我知道如何将每个对象从arrayList复制到对象数组中,但我想知道它是否会自动完成。

我想要这样的事情:

ArrayList<TypeA> a;

// Let's imagine "a" was filled with TypeA objects

TypeA[] array = MagicalCommand(a);

6 个答案:

答案 0 :(得分:92)

标准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[])的数组的大小

答案 1 :(得分:9)

您可以使用此代码

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

然后,如果你想让那个对象回到TypeA,只需用instanceOf方法检查它。

答案 2 :(得分:7)

答案 3 :(得分:2)

  

将ArrayList转换为对象   阵列

ArrayList有一个构造函数,它接受一个Collection,所以常见 成语是:

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

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

现在,Arrays.asList(array)将包装数组,因此更改列表 会影响阵列,反之亦然。虽然您无法添加或删除

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

答案 4 :(得分:1)

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

答案 5 :(得分:-1)

使用这些库:

  • gson-2.8.5.jar
  • json-20180813.jar

使用此代码:

List<Object[]> testNovedads = crudService.createNativeQuery(
                "SELECT cantidad, id FROM NOVEDADES GROUP BY id ");

        Gson gson = new Gson();
        String json = gson.toJson(new TestNovedad());
        JSONObject jsonObject = new JSONObject(json);
        Collection<TestNovedad> novedads = new ArrayList<>();
        for (Object[] object : testNovedads) {
            Iterator<String> iterator = jsonObject.keys();
            int pos = 0;
            for (Iterator i = iterator; i.hasNext();) {
                jsonObject.put((String) i.next(), object[pos++]);
            }
            novedads.add(gson.fromJson(jsonObject.toString(), TestNovedad.class));
        }
        for (TestNovedad testNovedad : novedads) {
            System.out.println(testNovedad.toString());
        }

/**
 * Autores: Chalo Mejia 
 * Fecha: 01/10/2020
 */
package org.main;

import java.io.Serializable;

public class TestNovedad implements Serializable {

    private static final long serialVersionUID = -6362794385792247263L;

    private int id;

    private int cantidad;

    public TestNovedad() {
        // TODO Auto-generated constructor stub
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getCantidad() {
        return cantidad;
    }

    public void setCantidad(int cantidad) {
        this.cantidad = cantidad;
    }

    @Override
    public String toString() {
        return "TestNovedad [id=" + id + ", cantidad=" + cantidad + "]";
    }

}
相关问题