将列表的前n个元素放入数组的最快方法

问题描述

选项1比选项2快

因为选项2创建了一个新List引用,然后n从中创建了一个元素数组List(选项1完美调整了输出数组的大小)。但是,首先您需要通过一个错误解决此问题。使用<(不是<=)。喜欢,

String[] out = new String[n];
for(int i = 0; i < n; i++) {
    out[i] = in.get(i);
}

解决方法

获取存储在数组中的列表的前n个元素的最快方法是什么?

考虑到这种情况:

int n = 10;
ArrayList<String> in = new ArrayList<>();
for(int i = 0; i < (n+10); i++)
  in.add("foobar");

选项1:

String[] out = new String[n];
for(int i = 0; i< n; i++)
    out[i]=in.get(i);

选项2:

String[] out = (String[]) (in.subList(0,n)).toArray();

选项3: 是否有更快的方法?也许使用Java8流?

猜你在找的技术问答相关文章

如何检查配对的蓝牙设备是打印机还是扫描仪(Android)
是否允许实体正文进行HTTP DELETE请求?
如何将ZipInputStream转换为InputStream?
java.util.logging Java 8中的变量
PowerMockito.doReturn返回null
Java中的RESTful调用
Swing / Java:如何正确使用getText和setText字符串
特殊字符和重音字符
Android Studio中的ndk.dir错误
错误“找不到主类”