首页 > 解决方案 > 使用 JAVA 8 将值插入列表

问题描述

public static void main(String[] args) {

    List<Long> list = new ArrayList<>();

    for (long i = 1; i < 100000000; i++) {
        list.add(i);
    }



}

这个循环需要很长时间才能将值插入到列表中,JAVA 8 中是否有任何功能,使用相同的任务将在最短的时间内执行。

标签: javajava-8

解决方案


如果列表不是强制性的ArrayList

    Long[] array = new Long[100_000_000];
    Arrays.parallelSetAll(array, Long::valueOf);
    List<Long> list = Arrays.asList(array);

我没有做过任何时间测量。从您可以设置值的意义上说,该列表是可修改的,但它具有固定大小,没有添加或删除。

如果您确实需要可变大小的列表,您可以尝试:

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

但是,它在某种程度上违背了利用并行执行的想法,而且我不再确定与您已经获得的速度相比如何。

编辑:如果列表根本不需要修改,请制作自己的“列表”实现,它不存储任何实际数据并在每次请求元素时计算值。然后初始化将不需要时间。您可以AbstractList为此目的进行子类化。


推荐阅读