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萬個數據進行循環運行時間: