1.将数组转化为列表
尽量使用
ArrayList<String> arrayList = new ArrayList<String>(Arrays.asList(arr));
如果使用
List<String> list = Arrays.asList(arr);
因为这样得到的ArrayList 不是 java.util.ArrayList 类而是Arrays的私有的静态类,这样得到的List的大小是固定的,无法新增元素。
2.判断一个数组是否包含一个值
简单写法
Arrays.asList(arr).contains(targetValue);
3.字符串拼接
Java 中String是不可变的,所以不要使用
String result="";
for(String s: arr){
result = result + s;
}
尽可能使用StringBuilder
或者 StringBuffer
顺带一提:除非有线程安全的需要,否则的话尽量使用HashMap
ArrayList
StringBuilder
,
而不是使用Hashtable
Vector
StringBuffer
。
4.避免for循环中的重复计算
使用
for (int i = 0, int length = list.size(); i < length; i++){
process();
}
而不是使用
for (int i = 0; i < list.size(); i++){
process();
}
这样可以减少对list.size()
的重复计算。
5.不要在循环内创建对象引用
如下代码
for (int i = 0; i < 10; i++){
Object object = new Object();
}
会有10份Object的对象引用,如果不是10而是其他很大的数字,那么极大增大开销。
所以可以修改为
Object object = null;
for (int i = 0; i < 10; i++){
object = new Object();
}
这样就只会有1个Object的对象引用。
6.根据字符串模板匹配得到对应子串
如果你多条有类似如下的字符串:
你的车型信息为:荣威CSA6452NDAN,对应编码为:BRWARBUD0003
你想得到车型信息和编码后的内容,可以用正则匹配获取。
String s = "你的车型信息为:(.*?),对应编码为:(.*?)";
Pattern pattern = Pattern.compile(s);
String to = "你的车型信息为:荣威CSA6452NDAN,对应编码为:BRWARBUD0003";
Matcher matcher = pattern.matcher(to);
if(matcher.find()){
String s1 = matcher.group(1);
String s2 = matcher.group(2);
}
对应得到的s1和s2就是对应匹配到的内容。
To Be continued