PO实体类User:

package aA;

public class User {
private String name; private int many;
private int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getMany() {
return many;
} public void setMany(int i) {
this.many = i;
}
public User(int many,int id){
this.many = many;
this.id =id;
}
public User(){ }
}

PO实体类Cumster:

package aA;

public class Cumster {
private String name;
private int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
private int many;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getMany() {
return many;
}
public void setMany(int many) {
this.many = many;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Cumster(String name,int id){
this.name = name;
this.id = id;
}
public Cumster(){ }
}

随机产生字符串(模拟list数据添加):

package aA;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Random; /**
* 字符随机生成类
*/
public class RandomDemo {
/**
* 随机产生类型枚举
*/
public static enum TYPE {
/**小字符型*/
LETTER,
/**大写字符型*/
CAPITAL,
/**数字型*/
NUMBER,
/**大+小字符 型*/
LETTER_CAPITAL,
/**小字符+数字 型*/
LETTER_NUMBER,
/**大写字符+数字*/
CAPITAL_NUMBER,
/**大+小字符+数字 型*/
LETTER_CAPITAL_NUMBER,
}
private static String[] lowercase = { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o",
"p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z" }; private static String[] capital = { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P",
"Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" }; private static String[] number = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "0" }; /**
* 静态随机数
*/
private static Random random = new Random(); /**
* 获取随机组合码
* @param num 位数
* @param type 类型
* @type
* <br>小写字符型 LETTER,
* <br>大写字符型 CAPITAL,
* <br>数字型 NUMBER,
* <br>大+小字符型 LETTER_CAPITAL,
* <br>小字符+数字 型 LETTER_NUMBER,
* <br>大字符+数字 型 CAPITAL_NUMBER,
* <br>大+小字符+数字 型 LETTER_CAPITAL_NUMBER,
*/
public static String getRandom(int num, TYPE type) {
ArrayList<String> temp = new ArrayList<String>();
StringBuffer code = new StringBuffer();
switch (type) {
case LETTER:
temp.addAll(Arrays.asList(lowercase));
break;
case CAPITAL:
temp.addAll(Arrays.asList(capital));
break;
case NUMBER:
temp.addAll(Arrays.asList(number));
break;
case LETTER_CAPITAL:
temp.addAll(Arrays.asList(lowercase));
temp.addAll(Arrays.asList(capital));
break;
case LETTER_NUMBER:
temp.addAll(Arrays.asList(lowercase));
temp.addAll(Arrays.asList(number));
break;
case CAPITAL_NUMBER:
temp.addAll(Arrays.asList(capital));
temp.addAll(Arrays.asList(number));
break;
case LETTER_CAPITAL_NUMBER:
temp.addAll(Arrays.asList(lowercase));
temp.addAll(Arrays.asList(capital));
temp.addAll(Arrays.asList(number));
break;
}
for (int i = 0; i < num; i++) {
code.append(temp.get(random.nextInt(temp.size())));
}
return code.toString();
}
// public static void main(String[] args) {
// System.out.println(RandomDemo.getRandom(10, RandomDemo.TYPE.LETTER_CAPITAL));
// }
}

测试类:

package aA;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Random; public class AA { public static void main(String[] args) {
List<User> userList = new ArrayList<User>();
Random random = new Random();
for(int i = 0;i<100000;i++){
int age = random.nextInt(100);
userList.add(new User(age,i));
}
List<Cumster> cList = new ArrayList<Cumster>();
for(int i = 0;i<100000;i++){
cList.add(new Cumster(RandomDemo.getRandom(10,RandomDemo.TYPE.LETTER_CAPITAL),i));
}
//使用普通for循环遍历
// long start = System.currentTimeMillis();
// for (int i = 0; i < cList.size(); i ++) {
// User user = userList.get(i);
// for(int j=0;j<userList.size();j++){
// Cumster cumster = cList.get(j);
// if(user.getId() == cumster.getId()){
// user.setName(cumster.getName());
// }
// }
// }
// long end = System.currentTimeMillis(); //使用for-each迭代循环遍历
List<User> strList = new ArrayList<User>();
long start = System.currentTimeMillis();
for (Cumster cumster : cList) {
for (User user : userList) {
if(cumster.getId() == user.getId()){
user.setName(cumster.getName());
strList.add(user);
}
}
}
long end = System.currentTimeMillis(); for (int i = 0; i < userList.size(); i ++) {
System.out.print(userList.get(i).getName()+",");
}
// Collections.sort(userList, Comparator.comparing(User::getId));
Collections.sort(userList, new Comparator<User>(){
/*
* int compare(RateInfo R1, RateInfo R2) 返回一个基本类型的整型,
* 返回负数表示:R1 小于R2,
* 返回0 表示:R1和R2相等,
* 返回正数表示:R1大于R2
*/
public int compare(User R1, User R2) {
//按照RateCode的年龄进行升序排列
if(R1.getId() > R2.getId()){
return 1;
}
if(R1.getId() == R2.getId()){
return 0;
}
return -1;
}
});
System.out.println();
for (User user : userList) {
System.out.println(user.getId()+":"+user.getMany()+","+user.getName());
}
System.out.println(strList.toString());
System.out.println("运行时间:"+(end-start));
}
}

结果:

  1.使用for-each循环10万个数据进行循环运行时间:

  

  2.使用普通for循环10万个数据进行循环运行时间:

  

java普通for循环和for-each迭代循环的区别的更多相关文章

  1. Java语言之循环基础;各个语句的区别

    FOR: WHILE DO WHILE break 与 continue的区别 break直接中断语句跳出循环,continue跳出当前循环,后面会继续执行

  2. java基础3_循环语句,数组

    java中的循环: Java中提供了3中循环结构:  while  do-while  for ① 循环结构的作用? 可以不断重复执行循环结构中的代码: ② 上面的3个循环结构功能都是一样的,只是结构 ...

  3. java跳出外部循环

    java跳出外部循环两种方法 //用flag标识 boolean flag = true; for(int i=0;i<10&&flag;i++){ for(int j=0;j& ...

  4. java中for循环的6种写法

    有些写法上的说明写的过于武断,可能有很多不当之处,仅供参考.   package ForLoop; import java.util.ArrayList; import java.util.Itera ...

  5. java关于for循环。

    众所周知,JAVA中for循环的基本格式为: for(初始化表达式:布尔表达式:循环后更新表达式){循环体} 举个例子来说可以写成 (1)for (int x=1;x<10;x++){ Syst ...

  6. Java中for_each循环的使用

    最近在看一些和安卓相关的书籍,看到了for_each这种循环结构,这是为了简化java的for循环而改造的一种方便使用的格式. 格式如下: for(数据类型 变量:集合) 语句块 接下来看一个例程: ...

  7. java中的循环方法(附带本人遇到的坑)

    java循环结构 顺序结构的程序语句只能 被执行一次.如果你要同样的操作执行多次,就需要使用循环结构. java中有三种主要的循环结构: 1.while 循环 2.do...while 循环 3.fo ...

  8. Java基础之循环语句、条件语句、switch case 语句

    Java 循环结构 - for, while 及 do...while 顺序结构的程序语句只能被执行一次.如果您想要同样的操作执行多次,,就需要使用循环结构. Java中有三种主要的循环结构: whi ...

  9. Java 增强 for 循环

    Java 增强 for 循环 Java5 引入了一种主要用于数组的增强型 for 循环. Java 增强 for 循环语法格式如下: for(声明语句 : 表达式) { //代码句子 } 声明语句:声 ...

  10. java用while循环设计轮询线程的性能问题

    java用while循环设计轮询线程的性能问题 轮询线程在开发过程中的应用是比较广泛的,在这我模拟一个场景,有一个队列和轮询线程,主线程往队列中入队消息,轮询线程循环从队列中读取消息并打印消息内容.有 ...

随机推荐

  1. 2019 Multi-University Training Contest 6 Nonsense Time (纯暴力)

    题意:给你一个n的排列,起初这些数都不能用, 然后还有一个数组 第 i 个数表示下标为 i 的数能够使用. 问每一个 i 对应的最长上升子序列. 题解: 可以通过倒推,从后往前考虑转化一下 ,然后就是 ...

  2. spring AOP 编程--AspectJ注解方式 (4)

    1. AOP 简介 AOP(Aspect-Oriented Programming, 面向切面编程): 是一种新的方法论, 是对传统 OOP(Object-Oriented Programming, ...

  3. Foundation框架系列-NSArray

    NSArray常用API 数组字符串指定字符拼接 // 将数组中的元素以separator拼接返回字符串 比如@[@"a=1", @"b=2"] 以separa ...

  4. 阿里云MaxCompute 2019-8月刊

    您好,MaxCompute 2019.8月刊为您带来8月产品.技术最新动态,欢迎阅读. 导读 [重要发布]8月产品重要发布 [文档更新]8月重要文档更新推荐 [干货精选]8月精选技术文章推荐 [精彩活 ...

  5. lumen框架使用Elasticsearch详解

    该博文是集合几个博客踩坑得来的,百度热搜前几篇都是缺胳膊少腿的,所以结合几篇博客实现了一遍. 一.lumen使用Elasticsearch 首先需要搭建好的elasticsearch环境: http: ...

  6. Docker这个新软件究竟是用来干嘛的???

    http://dockone.io/article/378 尝试新软件 对开发者而言,每天会催生出的各式各样的新技术都需要尝试,然而开发者却不太可能为他们一一搭建好环境并进行测试.时间非常宝贵,正是得 ...

  7. Quartz:Quartz

    ylbtech-Quartz:Quartz Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用.Qu ...

  8. diskpart

    比如格式化成fat32 format fs=fat32 quick 比鼠标方便 如何使用: 打开cmd输入diskpart进入命令 首先 list disk 然后 然后 clean 然后 create ...

  9. Java程序员面试题收集(1)

    一.Java基础部分 1.面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: 1)抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面.抽象只关注对象有哪 ...

  10. Java基础知识(面试问题1)

    1.什么是 GC?为什么要有 GC?GC(Garbage Collection)是垃圾收集的意思,负责清除对象并释放内存.Java 提供的 GC 功能可以自动检测对象是否超过作用域从而达到自动回收内存 ...