String、StringBuffer、StringBuilde
2020-03-17 本文已影响0人
zhangweisep
package com.demo;
import com.google.common.collect.Lists;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.Callable;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
/**
* @Filename: StringTest
* @Author: Zhang Wei
* @Date: 2018/12/27 14:29
* @Description:
* @History:
*/
public class StringTest {
// @Autowired
// private ThreadPoolExecutor threadPoolExecutor;
public static String BASEINFO = "Mr.Y";
public static int COUNT = 2000000;
public static void main(String[] args) throws Exception {
doStringTest();
doStringBufferTest();
doStringBuilderTest();
//线程并发测试
// ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(3,
// 10,
// 1,
// TimeUnit.SECONDS,
// new ArrayBlockingQueue<>(
// 1));
// List<Callable<Void>> tasklist = Lists.newArrayList();
// tasklist.add(() -> {
// doStringTest();
// return null;
// });
// tasklist.add(() -> {
// doStringTest();
// return null;
// });
// threadPoolExecutor.invokeAll(tasklist);
List<String> list = Lists.newArrayList();
list.add(" I ");
list.add(" like ");
list.add(" BeiJing ");
list.add(" tian ");
list.add(" an ");
list.add(" men ");
list.add(" . ");
doStringBufferListTest(list);
doStringBuilderListTest(list);
}
/**
* 执行一项String赋值测试
*/
public static void doStringTest() {
String str = new String(BASEINFO);
long starttime = System.currentTimeMillis();
//拥有线程并发测试
// for (int i = 0; i < COUNT; i = 0) {
// str = str + "miss";
// COUNT--;
// }
for (int i = 0; i < COUNT / 100; i++) {
str = str + "miss";
}
long endtime = System.currentTimeMillis();
System.out.println((endtime - starttime)
+ " millis has costed when used String.");
}
/**
* 执行一项StringBuffer赋值测试
*/
public static void doStringBufferTest() {
StringBuffer sb = new StringBuffer(BASEINFO);
long starttime = System.currentTimeMillis();
for (int i = 0; i < COUNT; i++) {
sb = sb.append("miss");
}
long endtime = System.currentTimeMillis();
System.out.println((endtime - starttime)
+ " millis has costed when used StringBuffer.");
}
/**
* 执行一项StringBuilder赋值测试
*/
public static void doStringBuilderTest() {
StringBuilder sb = new StringBuilder(BASEINFO);
long starttime = System.currentTimeMillis();
for (int i = 0; i < COUNT; i++) {
sb = sb.append("miss");
}
long endtime = System.currentTimeMillis();
System.out.println((endtime - starttime)
+ " millis has costed when used StringBuilder.");
}
/**
* 测试StringBuffer遍历赋值结果
*
* @param mlist
*/
public static void doStringBufferListTest(List<String> mlist) {
StringBuffer sb = new StringBuffer();
long starttime = System.currentTimeMillis();
for (String string : mlist) {
sb.append(string);
}
long endtime = System.currentTimeMillis();
System.out.println(sb.toString() + "buffer cost:"
+ (endtime - starttime) + " millis");
}
/**
* 测试StringBuilder迭代赋值结果
*
* @param mlist
*/
public static void doStringBuilderListTest(List<String> mlist) {
StringBuilder sb = new StringBuilder();
long starttime = System.currentTimeMillis();
for (Iterator<String> iterator = mlist.iterator(); iterator.hasNext(); ) {
sb.append(iterator.next());
}
long endtime = System.currentTimeMillis();
System.out.println(sb.toString() + "builder cost:"
+ (endtime - starttime) + " millis");
}
}