当前位置: 首页 > 面试题库 >

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

蒲昊苍
2023-03-14
问题内容

获取存储在数组中的列表的前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流?


问题答案:

选项1比选项2快

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

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


 类似资料:
  • 问题内容: 我知道我可以像下面这样: 但是,由于它做了完整的排序,所以它非常慢。 我想知道numpy是否提供一些可以快速完成的方法。 问题答案: 该模块具有一种快速的局部排序方法,可直接与Numpy数组配合使用:。 请注意,返回的是已排序的实际值,如果要使用已排序的值的索引(返回值),则应使用。 我已经进行了基准测试: 其中是一个随机的1,000,000个元素的数组。 时间安排如下: :每个循环2

  • 问题内容: 所以我想知道如何最好地创建一个空白列表的列表: 由于Python如何处理内存中的列表,因此不起作用: 这确实会创建,但是每个元素都是相同的列表: 类似于列表理解的作品: 但这使用Python VM进行循环。有什么方法可以使用隐式循环(利用C语言编写的代码)吗? 这实际上要慢一些。:( 问题答案: 可能唯一的方法是比 是 它不必每次迭代都创建一个新对象,并且在我的计算机上快15%。 编辑

  • 问题内容: 做到这一点的最佳方法是什么? 问题答案: 使用 array_slice() 这是PHP手册中的一个示例:array_slice 只有一个小问题 如果数组索引对您有意义,请记住这将重置并重新排列 数字 数组索引。您需要设置标志来避免这种情况。(第4个参数,自5.0.2起可用)。 例: 输出:

  • 我需要从Python 2.7中的对象列表中删除前n个元素。有没有一种不使用循环的简单方法?

  • 问题内容: 说我有一个清单,我想遍历第一个清单。用Python编写此代码的最佳方法是什么? 问题答案: 通常的方法是切片:

  • 问题内容: 有没有比在Python中交换两个列表元素更快的方法了 还是我不得不求助于Cython或Weave之类? 问题答案: 看起来Python编译器使用此构造优化了临时元组: 码: 输出: 两个加载,一个和两个保存,而三个加载和三个保存。您不太可能找到更快的机制。