首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使arrayList.toArray()返回更具体的类型

使arrayList.toArray()返回更具体的类型
EN

Stack Overflow用户
提问于 2011-02-21 10:07:11
回答 6查看 173.8K关注 0票数 211

所以,通常ArrayList.toArray()会返回一个Object[]类型的....but假设它是一个Arraylist of object Custom,我该如何让toArray()返回一个Custom[]类型而不是Object[]类型呢

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-02-21 10:19:33

如下所示:

代码语言:javascript
复制
List<String> list = new ArrayList<String>();

String[] a = list.toArray(new String[0]);

在Java6之前,建议这样写:

代码语言:javascript
复制
String[] a = list.toArray(new String[list.size()]);

因为内部实现无论如何都会重新分配一个大小合适的数组,所以你最好提前做。由于首选使用Java6空数组,请参见.toArray(new MyClass[0]) or .toArray(new MyClass[myList.size()])?

如果您的列表类型不正确,则需要在调用toArray之前进行强制转换。如下所示:

代码语言:javascript
复制
    List l = new ArrayList<String>();

    String[] a = ((List<String>)l).toArray(new String[l.size()]);
票数 341
EN

Stack Overflow用户

发布于 2011-02-21 10:16:50

它实际上不需要返回Object[],例如:-

代码语言:javascript
复制
    List<Custom> list = new ArrayList<Custom>();
    list.add(new Custom(1));
    list.add(new Custom(2));

    Custom[] customs = new Custom[list.size()];
    list.toArray(customs);

    for (Custom custom : customs) {
        System.out.println(custom);
    }

这是我的Custom类:

代码语言:javascript
复制
public class Custom {
    private int i;

    public Custom(int i) {
        this.i = i;
    }

    @Override
    public String toString() {
        return String.valueOf(i);
    }
}
票数 16
EN

Stack Overflow用户

发布于 2020-09-30 19:57:13

将List转换为特定类型的数组的较短版本(例如Long):

代码语言:javascript
复制
Long[] myArray = myList.toArray(Long[]::new);

(可从java 11获得)

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5061640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档