List转数组的3种方法速度比较

条件:对100w个数进行ArrayList转为nums[]/Integers[]

分别采用的方法

1、new一个Int[]+循环遍历列表
2、stream流+Lambda表达式mapToInt(k->k)
3、List的toArray()函数(只能转为Integer数组,若想转Int数组,只能参考上述两种方法)

具体代码实现

public class Test {public static void main(String[] args) {ArrayList<Integer> list = new ArrayList<>();//列表转数组的速度实验,用100w个数进行实验Random random =new Random(1000);Long preTime;Long behindTime;for(int i=0;i<1000000;i++){list.add(random.nextInt());}//1.数组进行转换preTime = System.currentTimeMillis();int[] nums1= new int[list.size()];for (int i = 0; i < list.size(); i++) {nums1[i] = list.get(i);}behindTime = System.currentTimeMillis();System.out.println("1、new 一个Int[]+循环遍历列表时间:"+(behindTime-preTime));//2.使用Stream流preTime = System.currentTimeMillis();int[] nums2 = list.stream().mapToInt(k->k).toArray();behindTime = System.currentTimeMillis();System.out.println("2、stream流+Lambda表达式时间:"+(behindTime-preTime));//3.使用List本身的toArray()函数preTime = System.currentTimeMillis();Integer[] nums3 = list.toArray(new Integer[list.size()]);behindTime = System.currentTimeMillis();System.out.println("3、List的toArray()函数时间:"+(behindTime-preTime));}}

最后的结果:

1、new 一个Int[]+循环遍历列表时间:3ms
2、stream流+Lambda表达式时间:52ms
3、List的toArray()函数时间:5ms

实验结论:三种方法中方法1通过new int[]数组再遍历赋值的方式最快,同时也是代码量最大的;方法2通过Stream流先进行强制类型转换然后再转为int[]的方法是最慢的,但是其代码只需一行,非常简洁;方法3直接通过List的toArray()函数转换的速度也是很快的,只略慢于方法1,并且其代码量也只有一行,但是,该方法不能转换为基础类型,具有一定的限制。

List转数组的3种方法速度比较相关推荐

  1. php遍历数组哪个效率高,PHP遍历数组的三种方法及效率对比分析

    PHP遍历数组的三种方法及效率对比分析 发布于 2015-03-04 21:55:27 | 129 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hypertext ...

  2. php遍历数组哪个效率高,PHP遍历数组的三种方法及效率对比分析_php技巧

    本文实例分析了PHP遍历数组的三种方法及效率对比.分享给大家供大家参考.具体分析如下: 今天有个朋友问我一个问题php遍历数组的方法,告诉她了几个.顺便写个文章总结下,如果总结不全还请朋友们指出 第一 ...

  3. php 遍历 效率高,PHP遍历数组的三种方法及效率对比分析

    这篇文章主要介绍了PHP遍历数组的三种方法及效率对比,实例分析了foreach.while与for三种遍历数组的方法与相关的效率比对,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例分析了PHP遍 ...

  4. php高效遍历,PHP 遍历数组的三种方法及效率对比分析

    PHP 遍历数组的三种方法及效率对比分析 本文实例分析了 PHP 遍历数组的三种方法及效率对比分享给大家供大家参考具体分析如下: 今天有个朋友问我一个问题 php 遍历数组的方法, 告诉她了几个顺便写 ...

  5. Java中创建数组的几种方法

    Java中创建数组的几种方法 public static void main(String[] args) { //创建数组的第一种方法 int[] arr=new int[6]; int intVa ...

  6. python遍历数组的两种方法及将print的内容写入文件中

    python遍历数组的两种方法 第一种,最常用的,通过for in遍历数组 colours = ["red","green","blue"] ...

  7. 用new创建一个二维数组,有两种方法,是等价的

    //用new创建一个二维数组,有两种方法,是等价的      一:      int   (*p)[10]   =   new   int[5][10];      二:      int   **p ...

  8. 通过指针访问二维数组的三种方法

    下面总结了一下通过指针访问二维数组的三种方法,里边涉及指针.指针数组.数组指针.指向指针的指针以及二维数组的应用,愿对于大家理解和使用指针有所参考和帮助. 程序如下: #include <std ...

  9. 知识点2:js(javascript)中检测是否为数组的两种方法【翻转数组案例】

    javascript基础知识 文章目录 javascript基础知识 前言 一.翻转数组案例 二.检测数组的两种方法 1.如果传输的参数不是数组 2.instanceof 运算符 可以用来检测是否满足 ...

最新文章

  1. springBoot PUT请求接收不了参数的解决办法
  2. 从零开始一起学习SLAM | 为啥需要李群与李代数?
  3. 用C语言实现素数筛法获取一亿(100000000)以内的全部素数
  4. Linux(CentOS 7_x64位)系统下安装ACPYPE
  5. 关于举办第十五届全国大学生智能汽车竞赛浙江赛区选拔赛的通知
  6. 阿里云云服务器更新GCC是提示错误解决方案
  7. 社区首款 OAM 可视化平台发布!关注点分离、用户友好、上手难度低
  8. 计算机视觉论文doc,嘉炬-计算机视觉论文资料.doc
  9. 【libjpeg.lib】在Windows7下编译生成libjpeg.lib
  10. 2018年12月份最热门的Java开源项目
  11. 集成直流稳压电源设计报告_线性直流稳压电源结构,线性直流电源技术指标
  12. 华为Mate 40正式发布:4999元起、买吗?
  13. 毕啸南专栏 | 对话旷视CEO印奇:AI产业2018年将迎来转折
  14. 迅雷chrome扩展插件造成服务器返回的数据js解析页面数据异常
  15. 初探Linux--鸟哥私房菜读书笔记
  16. Matlab信号处理,小波降噪
  17. 俄亥俄州立大学计算机专业排名,俄亥俄州立大学计算机科学专业
  18. Flask模板中可以直接访问的特殊变量和方法
  19. 几种优秀的屏幕录像软件用法介绍(图)
  20. Appium测试混血App

热门文章

  1. go 操作MySQL之mysql包
  2. 行业寒冬:我们究竟还要学习哪些Android知识?赶紧收藏!
  3. 全民emo时代,是什么在治愈着当代年轻人?
  4. 设计模式是什么鬼(解释器)
  5. 软文类型|软文按营销目的可划分为这几类
  6. 关于RPG游戏结构撰写的相关探索下篇
  7. Unity3D 5 官方教程:标准着色器
  8. android 融云消息推送,如何解决 嵌入融云SDK后, Android 手机收不到消息推送?
  9. c#winform串口助手源码
  10. 小米mix Android9,小米mix3的系统是安卓9吗?