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. PAT甲级——A1128 N Queens Puzzle【20】

    The "eight queens puzzle" is the problem of placing eight chess queens on an 8 chessboard ...

  2. flexbox属性速览及常见布局实现

    CSS3 弹性盒子(Flex Box)弹性盒子是即 CSS2 浮动布局后, CSS3 的一种新的布局模式. CSS3 弹性盒( Flexible Box 或 flexbox),是一种当页面需要适应不同 ...

  3. 简介、变量、常数、if、基础数据类型、注释、input()

    ​ ### 1.python的历史 python2和python3的区别 python2 源码不统一,重复代码 python 源码统一,没有重复代码 2004 Django框架的诞生 2.python ...

  4. c#窗体开发

    奇: 常用控件的使用(期间参杂着VS快捷键/常用设置) 快捷键:引用命名空间:shift+alt+F10 断点:F9 调试:F5 逐句调试(每行代码一次跳转):F11 逐过程调试:F10 重构提取方法 ...

  5. selenium借助AutoIt识别上传(下载)详解【转】

    AutoIt目前最新是v3版本,这是一个使用类似BASIC脚本语言的免费软件,它设计用于Windows GUI(图形用户界面)中进行自动化操作.它利用模拟键盘按键,鼠标移动和窗口/控件的组合来实现自动 ...

  6. 跳表上线性dp——1150D 好题!

    题目设计的很好,感觉做了这题对dp的状态有了更深的理解 /* 先预处理序列自动机 dp[i][j][k]表示匹配到i,j,k时的最靠前的位置 那么现在A串加入了一个字母,我们要求的就是dp[i+1][ ...

  7. sqlite3-入门日记4-实现C++类封装

    一.前言:   今天试了下如何用C++类实现接口封装,感觉蛮好 .用于封装的类主要有两个,SQLiteStatement类和SQLiteWrapper类,是一个老外写的.我看了下源码,主要是对C接口进 ...

  8. LUOGU P2580 于是他错误的点名开始了(trie树)

    传送门 解题思路 trie树模板

  9. VS2010-MFC(对话框:创建对话框模板和修改对话框属性)

    转自:http://www.jizhuomi.com/software/149.html 对话框,大家应该很熟悉了,在我们常用的软件中大多都有对话框界面,例如,360安全卫士的主界面其实就是个对话框, ...

  10. String类的trim() 方法

    用于删除字符串的头尾空白符. 语法:public String trim() 返回值:删除头尾空白符的字符串. public class Test {    public static void ma ...