繁体   English   中英

将 ArrayList 转换为对象数组

[英]Convert an ArrayList to an object array

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

我想要这样的东西:

ArrayList<TypeA> a;

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

TypeA[] array = MagicalCommand(a);

像标准Collection.toArray(T[])应该做你需要的东西(注意ArrayList实现Collection ):

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

附带说明一下,您应该考虑将a定义a List<TypeA>而不是ArrayList<TypeA> ,这可以避免某些可能并不真正适用于您的应用程序的特定于实现的定义。

此外,请参阅这个问题有关使用a.size()而不是0作为传递到数组的大小a.toArray(TypeA[])

您可以使用此代码

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

然后,如果您希望将该对象返回到 TypeA,只需使用 instanceOf 方法检查它。

是的。 ArrayList有一个toArray()方法。

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

将 ArrayList 转换为对象数组

ArrayList 有一个接受 Collection 的构造函数,所以常见的习惯用法是:

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

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

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

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

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

使用这些库:

  • 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 + "]";
    }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM