Java遍历List5种方法的效率对比
package com.test; import java.util.ArrayList;
import java.util.Iterator;
import java.util.List; /**
* @author tzq
* @date 2019-03-13 16:48
*/ public class Test {
//公共变量
int count=0;
static List<Integer> list = new ArrayList<>(); public static void main(String[] args) throws Exception{
//new一个实现Runnable的类
Test test=new Test();
//创建1个任务
MyRunnable myRunnable1=test.new MyRunnable();
//创建5个线程
for(int i=0;i<99;i++){
Thread t = new Thread(myRunnable1);
t.start();
t.join();
}
System.out.println("线程结束");
System.out.println(list.size());
long s1=System.nanoTime();
for (Integer i :list){ }
System.out.println("foreach程序耗时:"+(System.nanoTime()-s1)+" ms"); long s2=System.nanoTime();
Iterator iter = list.iterator();
while(iter.hasNext()){
Object o = iter.next();
}
System.out.println("Iterator程序耗时:"+(System.nanoTime()-s2)+" ms"); long s3=System.nanoTime();
int size = list.size();
for(int i=0;i<size;i++){
Object o= list.get(i);
}
System.out.println("for程序耗时:"+(System.nanoTime()-s3)+" ms"); long s4=System.nanoTime();
for(int i=0;i<list.size();i++){
Object o= list.get(i);
}
System.out.println("for程序耗时:"+(System.nanoTime()-s4)+" ms"); long s5=System.nanoTime();
list.stream().forEach(x->{
Object o= x;
});
System.out.println("stream程序耗时:"+(System.nanoTime()-s5)+" ms"); }
//创建一个实现Runnable的类
class MyRunnable implements Runnable{
public void run() {
while(true){
//锁住的是同一对象
synchronized(this){
if(count>=1000000){
break;
}
list.add(count);
System.out.println(Thread.currentThread().getName()+":count:"+(++count));
//测试时,线程更容易切换
Thread.yield();
} }
} } }
foreach程序耗时:27658646 ms
Iterator程序耗时:12158150 ms
for程序耗时:7618257 ms
for程序耗时:7031677 ms
stream程序耗时:101515437 ms
Java遍历List5种方法的效率对比的更多相关文章
- Java——反射三种方式的效率对比
转载自:https://blog.csdn.net/aitcax/article/details/52694423 1 使用field(效率最高) long start = S ...
- PHP生成随机密码的4种方法及性能对比
PHP生成随机密码的4种方法及性能对比 http://www.php100.com/html/it/biancheng/2015/0422/8926.html 来源:露兜博客 时间:2015-04 ...
- List遍历三种方法:1.for 2.增强性for 3.迭代器
package chapter09; import java.util.ArrayList;import java.util.Iterator;import java.util.List; /* * ...
- 清空StringBuilder的三种方法及效率
清空StringBuilder的三种方法及效率 大家知道对于字符串频繁拼接是使用stringbuilder.Append方法比使用string+=方法效率高很多,但有时需要清空stringbuilde ...
- C#判断字符串为空的几种方法和效率判断
C#判断字符串为空的几种方法和效率判断 string定义 1.1 string str1="":会定义指针(栈),并在内存里划一块值为空的存储空间(堆),指针指向这个空间.1.2 ...
- C# 判断字符串为空的4种方法及效率
在程序开发过程中,少不了要处理字符串,并且常常要判断字符串是否为空,通常有哪些判断方法,以及不同方法的效率又怎么样? 在 C# 中,通常有三种判断字符串是否为空的方法,下面分别探讨. 1.str.Le ...
- Golang拼接字符串的5种方法及其效率_Chrispink-CSDN博客_golang 字符串拼接效率 https://blog.csdn.net/m0_37422289/article/details/103362740
Different ways to concatenate two strings in Golang - GeeksforGeeks https://www.geeksforgeeks.org/di ...
- Java字符串连接的多种实现方法及效率对比
JDK 1.8(Java 8)里新增String.join()方法用于字符串连接.本文基于<Java实现String.join()和效率比较>一文,分析和比较四种自定义实现与String. ...
- 【Java必修课】判断String是否包含子串的四种方法及性能对比
1 简介 判断一个字符串是否包含某个特定子串是常见的场景,比如判断一篇文章是否包含敏感词汇.判断日志是否有ERROR信息等.本文将介绍四种方法并进行性能测试. 2 四种方法 2.1 JDK原生方法St ...
随机推荐
- 详解MySQL表空间以及ibdata1文件过大问题
ibdata1文件过大 原因分析 ibdata1是一个用来构建innodb系统表空间的文件,关于系统表空间详细介绍参考MySQL官网文档 上面是一个数据库的ibdata1文件,达到了780多G,而且还 ...
- SLAM+语音机器人DIY系列:(三)感知与大脑——5.机器人大脑嵌入式主板性能对比
摘要 在我的想象中机器人首先应该能自由的走来走去,然后应该能流利的与主人对话.朝着这个理想,我准备设计一个能自由行走,并且可以与人语音对话的机器人.实现的关键是让机器人能通过传感器感知周围环境,并通过 ...
- 【转载】java 中 String s = new String("abc") 创建了几个对象?!
原文链接点这里,感谢博主分享 答案是两个,现在我们具体的说一下: String s = new String("abc"); 首先我们要明白两个概念,引用变量和对象,对象一般通过n ...
- Map集合。
Map集合: java.util,Map<k,v> 特点:1.键值对 2.key-value一一对应 3.key不允许重复. Map常用实现类: java.util.HashMap< ...
- 10分钟 在linux里创建.net core helloworld控制台程序
官方教程 安装linux https://www.cnblogs.com/LittleFeiHu/p/9749455.html 第一步 :选择和你本机适用的Linux版本,我这里用的是18.04. 第 ...
- 数据库管理工具DataGrip使用总结(一)
DataGrip是JetBrains公司推出的管理数据库的产品,对于JetBrains公司,开发者肯定都不陌生,IDEA和ReSharper都是这个公司的产品,用户体验非常不错. 下载地址:https ...
- 学习笔记—JDBC
JDBC的概念 JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言 ...
- sql 按年月日统计
1.每年select year(ordertime) 年,sum(Total) 销售合计from 订单表group by year(ordertime) 2.每月select year(orderti ...
- Dell服务器U盘安装Windows Server时识别不到硬盘
Dell服务器U盘安装Windows Server时识别不到硬盘 1.下载驱动http://downloads.dell.com/FOLDER03688531M/1/SAS-RAID_Driver_T ...
- java拦截器(interceptor)
1.声明式 (1)注解,使用Aspect的@Aspect (2)实现HandlerInterceptor /** * 拦截请求 * * @author Administrator * */ @Comp ...